继承
Java继承是面向对象的最显著的一个特征.继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序
比如:可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱.
继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法,若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为父类,而称继承类B为A的子类.
特点
继承关系是传递的.若类C继承类B,类B继承类A(多层继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法.继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法.继承是在一些比较一般的类的基础上构造,建立和扩充新类的最有效的手段.
实例:父类
public class Person {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public Person() {
System.out.println("Person init");
}
public void eat(){
}
public static void run(){
System.out.println("run");
}
}
实例:子类
public class Teacher extends Person{
private int number;
public Teacher() {
System.out.println("Teacher init");
}
public Teacher(int age, String name, int number) {
super(age, name);
this.number = number;
}
@Override
public void eat() {
super.eat();
System.out.println(getName());
}
public static void run(){
System.out.println( "teacher run");
}
}
例子:使用类
public class Main {
public static void main(String[] args) {
// write your code here
Teacher teacher = new Teacher(18,"老师",99);
teacher.eat();
Teacher.run();
System.out.println(teacher.haha);
}
}
继承的关键字extends
类的继承是通过关键字extends来实现,类只能单一继承 子类中就是继承父类里的变量和方法 父类的构造凼数没有被继承,这里所说的意思是指在实例化子类的对象时,在new后面不能调用父类的构造凼数,但是可以在子类的构造凼数里使用super来调用父类的构造凼数,如果没有写super这句调用,子类会自动调用父类无参的构造凼数(但要确保无参构造凼数存在,否则会出错) 可以new一个子类的对象赋给一个父类的变量,当通过这个父类的变量执行方法时,其实是执行的子类的方法