What will be printed when you execute the following code?
class
C {
C() {
System.out.print(
"C"
);
}
}
class
A {
C c =
new
C();
A() {
this
(
"A"
);
System.out.print(
"A"
);
}
A(String s) {
System.out.print(s);
}
}
class
Test
extends
A {
Test() {
super
(
"B"
);
System.out.print(
"B"
);
}
public
static
void
main(String[] args) {
new
Test();
}
}
构造方法,Test类中又调用了父类A的带参数的构造方法,程序会转到A类中执行A类的构造方法。开始我以为是顺序原因,把
C c =
new
C();这条语句
放到构造方法后面去执行。结果不变,所以不是这个原因,在执行A类的构造方法时,JVM 会编译A类,然后加载进内存,运行的时候,运行的时候A类中有C类,所以还会把
C类也一起加载。所以结果会是这样