答案是YXYZ,请看代码里的注释:
- class X
- {
- Y b = new Y();// 【2】父类在调用构造函数之前会首先加载自己的成员变量,这里打印第一个Y
-
- X()
- {
- System.out.print("X"); //【3】调用父类构造函数,打印X
- }
- }
- class Y
- {
- Y()
- {
- System.out.print("Y");
- }
- }
- public class Test extends X {
- Y y = new Y();// 3
-
- Test()
- { //【1】首先从这里开始走,这里默认有一个super(),所以请跳转到父类中
- //【4】再加载本类的成员函数,因为构造函数作用就是给成员初始化,这里是第二个Y
- System.out.print("Z");//【5】这里打印最后一个字母Z
- }
- public static void main(String[] args)
- {
- new Test();//【0】这里是程序入口,调用了本类构造函数,请移步本类构造函数
- }
- }
复制代码 |