本帖最后由 海带 于 2015-4-16 10:13 编辑
- public class StaticDemo {
- public static void main(String[] args)
- {
- new Z(); //1
- }
- }
- class X {
- Y b = new Y();//3创建实例对象
- static {
- System.out.println("HelloWorld");//2静态代码块
- }
- {
- System.out.println("How are you ?");//4构造代码块
- }
- X() {
- System.out.print("X");//5构造方法
- }
- }
- class Y {
- Y() {
- System.out.print("Y");//构造方法
- }
- }
- class Z extends X {
- Y y = new Y();//6
- Z() {
- //super();
- System.out.print("Z");//7
- }
- } // 运行结果:
复制代码 HelloWorld
YHow are you ?
XYZ
问题是:为什么Y在How are you? 的前面?构造代码块不是优于构造函数执行吗?为什么 3 号处的执行在4号处的前面?
|
|