super

super用于调用父类的构造方法

如Person父类有

public Person(){

}

public Person(int age){

this.age=age;

}

再子类的构造方法中

public Student(){

super(20);
}

与this只能放在第一行同理,super也只能放在第一行

当即想调用父类构造方法,又想调用本类其他构造方法时怎么办?

这时可以先调用本类中的构造方法,再在调用的构造方法中调用父类的构造方法 

还需注意不管是哪里的构造方法,默认第一行都要调用一下父类的构造方法

但是默认调用的是空参构造方法,

所以当把父类的构造方法注释时,再执行子类的构造方法会报错

因为他还会调用父类的空参构造方法,这时就需要自己在第一行写出父类的构造方法

而且super()间接调用也可以(即用this()的构造方法里面有父类构造方法)

那么,子类中为什么会有一句隐式的super()呢?

因为子类会继承父类中的内容,所以子类在初始化时,必须先到父类中去执行父类的初始化动作即先执行父类构造,先看看父类怎么进行初始化的,然后再去操作

当父类中没有空参构造时,必须显示指定调用哪个有参构造,否则会报错

posted @ 2021-05-09 23:39  王子剑  阅读(153)  评论(0编辑  收藏  举报