Java中子类和父类构造方法的调用
- 建议在父类中手写无参的构造方法。
对于一个子类调用父类的案例,在子类实例化对象的过程中,总会事先调用一下父类的无参构造方法。即子类中默认的super()。
public class fu(){
public fu(){
sout("调用父类的无参构造方法")
}
public zi(age){
sout("调用父类的有参构造方法")
}
}
public class zi() extends fu{
public zi(){
sout("调用子类的无参构造方法")
}
public zi(int age){
sout("调用子类的有参构造方法")
}
}
此时,若实例化一个无参子类,会输出:
调用父类的无参构造方法
调用子类的无参构造方法
若实例化一个有参子类,会输出:
调用父类的无参构造方法
调用子类的有参构造方法
进一步尝试在父类中不写无参构造方法,会出现错误(子类的所有构造方法均出现错误,显示没有对应父类的构造方法。) 可以从两个方面解决。
一、父类中永远自己写一个无参构造。
二、在子类中利用super关键字调用有参的构造。
根本原因是在子类中,默认有一行super()去调用父类的无参构造。