對象初始化順序

 

初始化過程: 

1. 初始化父類中的靜態成員變量和靜態代碼塊 ; java

2. 初始化子類中的靜態成員變量和靜態代碼塊 ; spa

3.初始化父類的普通成員變量和代碼塊,再執行父類的構造方法;code

4.初始化子類的普通成員變量和代碼塊,再執行子類的構造方法;class

 

自上而下,自左而右變量

class X {
    Y y = new Y();

    public X() {
        System.out.print("X");
    }
}

class Y {
    public Y() {
        System.out.print("Y");
    }
}

public class Z extends X {
    Y y = new Y();

    public Z() {
        System.out.print("Z");
    }

    public static void main(String[] args) {
        new Z();
    }
}

(1)初始化父類的普通成員變量和代碼塊,執行  Y y=new Y();  輸出Y 方法

(2)再執行父類的構造方法;輸出Xstatic

(3) 初始化子類的普通成員變量和代碼塊,執行  Y y=new   Y();  輸出Y co

(4)再執行子類的構造方法;輸出Zblock

 

答案:YXYZnew

相關文章
相關標籤/搜索