面向对象的三大特征:封装,多态,继承
继承
继承的格式:
class 子类名 extends 父类名{
}
继承注意的事项:
1. 不能为了继承而继承,只有真正存在这继承关心的时候才去继承(比如狗和动物)
2.父类私有的成员变量不能被继承
3.父类的构造方法不能被继承
4.再创建子类的对象的时候默认会调用父类无参的构造方法
举个例子:
父类:
1 public classStudent {2 String name;3 publicStudent(){4 }5 publicStudent(String name ){6 this.name =name;7 }8 public voidStudy(){9 System.out.println(name+"学习马克思列宁主义!!");10 }11 }
子类:
1 public classBaseStudent extends Student{ //2
3 publicBaseStudent(String name){4 super(name);5 }6 public voidStudy(){7 System.out.println(name+"学习javaSE");8 }9 }
如上子类中出现了一个super(name);表示调用了父类一个参数的构造方法
super关键字:
super关键字表示对父类空间的引用,怎么理解呢?
可以理解为在子类创建的对象时分配的内存中单独开辟了一部分空间用来存储父类的构造函数和成员,super关键字可以调用这篇空间的内容;
super关键字使用场景:
1.如果子类和父类拥有同名的成员时,根据java就近原则会先调用子类的成员,则可以使用super关键字访问父类的成员变量
2.创建子类对象时默认会调用父类的无参构造方法,可以使用super关键字访问父类带参的构造函数(如上代码中的super(name))
super关键字使用细节:
1.super关键字一般会出现在子类得到构造方法中,而super必须时在子类的构造方法中的第一个语句位置
2.super和this不能同时出现在一个构造方法中调用其他的构造函数(因为都需要出现在第一条语句上)