Java 这个构造函数调用是如何工作的?
有人能解释一下这个构造函数调用是如何工作的吗。因为我假设它应该打印出来 A班同学你好 B班的同学你好 C班同学你好 我在这里感到困惑。感谢您的帮助。下面是我的代码Java 这个构造函数调用是如何工作的?,java,constructor,Java,Constructor,有人能解释一下这个构造函数调用是如何工作的吗。因为我假设它应该打印出来 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 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
派生类的每个构造函数首先构造它的基类:因此首先创建类B的对象,从而首先调用一个()。然后创建类C的对象,首先调用A()和B()。首先需要了解的是:基类构造函数在扩展类构造函数之前被调用 我们开始吧,从main开始:
new C(new B()); // new B() is created first before being passed to C
制作B对象:
既然已经创建了B对象,我们就可以将它传递到
newc(newb())代码>在主菜单中
制作C对象:
首先调用类构造函数//打印:来自类A的hello
第二次调用B类构造函数//打印:来自B类的hello
最后调用C类构造函数//打印:来自C类的hello
这为我们提供了以下预期输出:
hello from class A
hello from class B
hello from class A
hello from class B
hello from class C