这种时候有几种情况
情况一:当父类子类什么都不写的时候
class CD{
}
public class DVD extends CD {
}
这个情况虽然父类子类什么都没有,但及时看不见在CD和DVD当中有各自的无参构造方法,相当于隐形
实际当中是这样的
class CD{
CD(){
}
}
public class DVD extends CD {
DVD(){
super();
}
}
上面的内容都可以不写,但写好类之后系统就自带了
情况二:当父类写有参构造不写无参构造
父类的无参构造会自动消失,子类默认调用的是父类的无参构造,但是没有无参构造子类就会报错,所以必须手动调用父类的有参构造,(在子类的无参构造当中和有参构造都可以调用)
class CD{
CD(int r){
}
}
public class DVD extends CD {
DVD(int r) {
super(r);
}
}
情况三:当父类写有参构造也写无参构造
子类当中的无参构造默认调用父类的无参构造
class CD{
CD(){
}
CD(int r){
}
}
public class DVD extends CD {
}
相当于这样
class CD{
CD(){
}
CD(int r){
}
}
public class DVD extends CD {
DVD(){
super();
}
}
情况四:子类通过super()调用父类的有参构造和无参构造的时候super必须写在第一行
下面这样报错
情况四:this()也必须放第一行,所以this()和super()一般不放在一起用
下面是错误的