- super可以出现在实例方法和构造方法中,super不能出现在静态方法中。
- super的语法:“super.” 和 “super()”
- super. 大部分情况下可以省略
- super() 只能出现在构造方法的第一行,通过当前的构造方法去调用父类中的构造方法(根据传参决定调用父类中哪个构造方法)。
- 这样做的目的是创建子类对象的时候,先初始化父类型的特征。
- 如果一个构造方法第一行既没有this()又没有super()的话,默认会有一个super()。这样的语法机制保证了通过当前子类的构造方法一定会调用父类的无参构造方法,因此必须保证父类的无参构造方法必须存在,否则会报错。
- 例如
class Father{
String fatherFristName;
public Father(String fatherFristName) {
this.fatherFristName = fatherFristName;
}
}
class Child extends Father{
public Child(){
/*这里默认会有一个super();
但是由于父类中没有无参的构造方法,
所以这里编译器会报错。
*/
}
}
6.什么时候"super." 不能省略?
如果父类中有某个属性或方法,子类中也有相同的属性或方法,但是想在子类中访问“父类的特征”,“super.” 不能省略,否则会自动加上"this."。