父类若没有不带参数的构造器,子类构造器必须显式调用超类其他构造器,例子:
class Base{
Base(){
System.out.println("Base with no arg");
}
}
public class Test1 extends Base{
Test1(int v1){
}
public static void main(String[] args){
Test1 t1=new Test1(3);
}
}
输出结果为:Base with no arg;
这里子类没有显示调用父类的构造器,但是父类的构造器还是被调用了,说明Java加载类时会加载无参的父类构造函数。不仅如此,执行父类构造器时,系统会再次上溯执行其父类构造器……以此类推,创建任何Java对象,最先执行的总是java.langObject;类的构造器。