super
super用于调用父类的构造方法
如Person父类有
public Person(){
}
public Person(int age){
this.age=age;
}
再子类的构造方法中
public Student(){
super(20);
}
与this只能放在第一行同理,super也只能放在第一行
当即想调用父类构造方法,又想调用本类其他构造方法时怎么办?
这时可以先调用本类中的构造方法,再在调用的构造方法中调用父类的构造方法
还需注意不管是哪里的构造方法,默认第一行都要调用一下父类的构造方法
但是默认调用的是空参构造方法,
所以当把父类的构造方法注释时,再执行子类的构造方法会报错
因为他还会调用父类的空参构造方法,这时就需要自己在第一行写出父类的构造方法
而且super()间接调用也可以(即用this()的构造方法里面有父类构造方法)
那么,子类中为什么会有一句隐式的super()呢?
因为子类会继承父类中的内容,所以子类在初始化时,必须先到父类中去执行父类的初始化动作即先执行父类构造,先看看父类怎么进行初始化的,然后再去操作
当父类中没有空参构造时,必须显示指定调用哪个有参构造,否则会报错