类加载时候的构造器加载顺序

自己有时候常常会在这方面犯错,所以记一下。

    class X {  
        Y b=new Y();  
        X() {  
            System.out.println("X");  
        }  
    }  
    class Y {  
        Y() {  
            System.out.println("Y");  
        }  
    }  
    public class Z extends X {  
        Y y=new Y();  
        Z() {  
            super();  
            System.out.println("Z");  
        }  
        public static void main(String[] args) {  
            new Z();  
        }  
    }  
    //输出结果yxyz 

改例子中,首先加载Z的父类(从最远的父类开始加载),本例中Z继承自X,X没有父类了,所以加载顺序为:
X的成员变量—–>X构造方法——>Z的成员变量——>Z的构造方法。

总结
加载顺序:父类静态–>子类静态—>父类成员变量–>父类构造方法—–>子类成员变量—->子类构造方法

你可能感兴趣的:(java)