1.子类的构造的过程中必须调用父类的构造方法。
//父类
public class FaClass {
public FaClass() {
}
}
//子类
public class SonClass extends FaClass {
public SonClass(){
super();//显示调用父类构造方法
}
}
可以看到在子类SonClass的构造函数中,函数super()就是显示调用父类的构造函数(可以不可,系统会隐示调用super());
2.如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类的无参的构造函数。
//父类
public class FaClass {
public FaClass() {
}
}
//子类
public class SonClass extends FaClass {
public SonClass(){
}
}
如果子类SonClass 的构造方法中没有显示调用父类的构造方法(没有super()),则系统默认调用父类的无参的构造函数。
3.如果子类的构造方法中没有显示调用父类的构造方法,而父类没有无参构造函数,则就会报错。
//父类
public class FaClass {
private int age;
public FaClass(int age) {
this.age=age;
}
}
//子类
public class SonClass extends FaClass {
public SonClass(){ //会报错
}
}
4.如果子类的构造函数中要显示调用父类的构造函数,则super()必须放在子类构造函数的第一行。
//父类
public class FaClass {
private int age;
public FaClass(int age) {
this.age=age;
}
}
//子类
public class SonClass extends FaClass {
public SonClass(){
super(10);
}
}