这个构造函数调用是如何工作的?

Hel*_*rld 3 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 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
Run Code Online (Sandbox Code Playgroud)

Fra*_*fer 5

派生类的每个构造函数首先构造其基类:首先,您创建一个B类对象,导致首先调用A().然后创建一个C类对象,导致首先调用A()和B().