为什么在调用默认构造函数时未调用默认构造函数(相同类),但父类的默认构造函数正在调用 - 为什么?默认构造函数未调用
class A{
A(){
System.out.println("A()");
}
}
class B extends A{
B(){
System.out.println("B()");
}
}
class C extends B{
C(){
System.out.println("C()");
}
C(int i){
System.out.println("<------>"+i);
}
}
public class sample {
public static void main(String[] args) {
C c = new C(8);
}
}
输出:
A()
B()
<------>8
从技术上讲,这不是默认构造函数。在Java中,如果源中没有构造函数,则会提供合成的默认构造函数。具有零参数的构造函数被称为* no-args *构造函数。这与C++的不同之处在于,在各种情况下默认调用默认构造函数。 (Java语言中唯一一个无参数构造函数将被隐式调用的情况是,子类构造函数不显式调用“this(...)”或“super(...)”。) – 2011-05-19 13:12:38