java的子类在实例化的时候,会自动调用父类的无参构造函数(默认构造函数)。
举例如下:
父类:
public class P {
public P() {
System.out.print("父类 默认构造函数\n");
}
}
子类:
public class C extends P {
public C(int i) {
System.out.print("子类自定义构造函数\n");
}
}
测试类:
public class test {
public static void main(String[] args) {
C c1= new C(1);
}
}
输出:
父类 默认构造函数
子类自定义构造函数
需要注意的是父类的无参构造函数只能是public或者protected类型,否则子类无法访问,报错如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Implicit super constructor P() is not visible. Must explicitly invoke another constructor
at C.<init>(C.java:3)
at test.main(test.java:4)