任何人都可以解释这个构造函数调用是如何工作的。因为我假设它应该打印
你好,来自A班
你好,来自B班
你好,来自C班
我在这里很困惑。任何帮助表示赞赏。以下是我的代码。
public class A {
A(){
System.out.println("hello from class A");
}
}
public class B extends A {
B(){
System.out.println("hello from class B");
}
}
public class C extends B {
C(B b){
System.out.println("hello from class C");
}
public static void main(String[] args) {
new C(new B());
}
}
//result
hello from class A
hello from class B
hello from class A
hello from class B
hello from class C
答案 0 :(得分:5)
派生类的每个构造函数首先构造其基类:首先,创建一个B类对象,导致首先调用A()。然后创建一个C类对象,首先调用A()和B()。
答案 1 :(得分:0)
首先需要了解的内容:在扩展类构造函数之前调用基类构造函数。
我们走了,从主要开始:
new C(new B()); // new B() is created first before being passed to C
制作B对象:
现在创建了B对象,我们可以将它传递给main
中的new C(new b());
制作C对象:
这为我们提供了预期的以下输出:
hello from class A
hello from class B
hello from class A
hello from class B
hello from class C