日期:2014-05-20  浏览次数:20575 次

子类和父类的构造函数
初学Java,碰到个疑惑的问题,子类的构造函数一定会执行父类的构造函数?
有没有可能new T2()不运行T1的构构造?

public class Test1 {
public static void main(String[] args) {
new T2();
}
}

class T1 {
T1() {
System.out.println("T1 Created.");
}
}

class T2 extends T1 {
T2() {
System.out.println("T2 Created.");
}
}

------解决方案--------------------
不可能,先会执行T1()。
------解决方案--------------------
没有父亲哪来的儿子

还有:子类的构造函数一定会执行无参的父类构造函数
------解决方案--------------------
如果没有显式调用父类的构造函数,编译器会在子类的函数函数里加上调用父类无参的构造函数的方法。
所以T1的构造函数肯定会调用的。