标签:
1 class X { 2 Y b = new Y(); 3 X() { 4 System.out.print("X"); 5 } 6 } 7 8 class Y { 9 Y() { 10 System.out.print("Y"); 11 } 12 } 13 14 public class Z extends X { 15 Y y = new Y(); 16 Z() { 17 System.out.print("Z"); 18 } 19 20 public static void main(String[] args) { 21 new Z(); 22 } 23 }
类在调用构造函数之前,首先要执行初始化类成员的语句,如果继承了其它的类,则先调用父类的构造函数,之后才执行本类的类成员初始化语句,所以执行顺序为(按照行号标识): 21,16,3,2,9,10(Y),3,4,(X), 16,15,9,10(Y),16,17(Z),之后继续执行到结束.()中为该行输出的字符,所以输出结果为YXYZ。
附: jdb命令是jdk附带的一个类似linux gdb的一个调试命令,可以在命令行跟踪程序的运行,详情需参阅文档。
标签:
原文地址:http://my.oschina.net/u/1011578/blog/488355