下面是一道经典题:
1 | class X { |
判断输出结果:
结果是:YXYZ程序结束
分析一下,Java类成员的执行顺序:
1、父类公共的静态属性初始化或执行静态的块级代码(本题无)
2、初始化声明本身的公共的静态属性(本题无)
3、初始化声明父类公共属性(本题中的Y y1=new Y();)
4、执行父类的构造方法(本题中的X())
5、初始化声明本身的公共属性(本题中的Y y2 = new Y();)
6、执行本身的构造函数(本题中的Z();)
7、静态方法不执行(本题无)
1 | class X { |
结果是:YXYZ程序结束
1、父类公共的静态属性初始化或执行静态的块级代码(本题无)
2、初始化声明本身的公共的静态属性(本题无)
3、初始化声明父类公共属性(本题中的Y y1=new Y();)
4、执行父类的构造方法(本题中的X())
5、初始化声明本身的公共属性(本题中的Y y2 = new Y();)
6、执行本身的构造函数(本题中的Z();)
7、静态方法不执行(本题无)