为什么运行结果一定是ABC的顺序呢

class A {
public A(){
System.out.println("我是A类");
}
}
class B{
public B(){
System.out.println("我是B类");
}
}
class C extends A{//在类C中定义一个类B的引用属性成员并同时创建一个B类对象让其指向
private B b=new B();
public C(){
System.out.println("我是C类");
}
}
public class Test{
public static void main(String[] args) {
new C();
}
}

因为C是A的子类,new C的第一步是构造基类对象,所以先输出A;然后再构造C。C在构造时,先构造成员变量b,即执行new B(),所以输出B

理解这道题,需要知道java 类构造顺序。 调用子类的构造需要先构造父类然后才是子类。 而B类声明在c类中做为C类的类成员,执行时机在构造类之后。