1. 程式人生 > >Java中(靜態)變數、(靜態)程式碼塊的執行順序包含父類

Java中(靜態)變數、(靜態)程式碼塊的執行順序包含父類

1、parent類(父類)

public class parent {

    public static int parentParamOne = 1;
    public static String parentParamTwo = "two1111";

    static{
        System.out.println("父類靜態程式碼塊開始執行");
        System.out.println("parentParamOne ==" + parentParamOne);
        System.out.println("parentParamTwo ==" + parentParamTwo);
        parentParamOne += 2;
        parentParamTwo = "two2222";
        System.out.println("父類靜態程式碼塊開始執行結束");
    }

    public parent(){
        System.out.println("父類建構函式開始執行");
        System.out.println("parentParamOne ==" + parentParamOne);
        System.out.println("parentParamTwo ==" + parentParamTwo);
        parentParamOne += 20;
        parentParamTwo = "two3333";
        System.out.println("父類建構函式開始執行結束");
    }
    
}

2、child類 

/*
 * 目標:測試子父類之間關於靜態程式碼與靜態變數  構造方法之間的執行順序
 * */

public class child extends parent{

    public static int childParamOne = 1;

    public static String childParamTwo = "two1111";

    static{
        System.out.println("子類靜態程式碼塊開始執行");
        System.out.println("childParamOne ==" + childParamOne);
        System.out.println("childParamTwo ==" + childParamTwo);
        childParamOne += 2;
        childParamTwo = "two2222";
        System.out.println("子類靜態程式碼塊開始執行結束!!");
    }

    public child() {
        System.out.println("childParamOne ==" + childParamOne);
        System.out.println("childParamTwo ==" + childParamTwo);
        childParamOne += 222;
        childParamTwo = "two333";
        System.out.println("childParamOne ==" + childParamOne);
        System.out.println("childParamTwo ==" + childParamTwo);
    }

    public static void main(String[] args) {
        System.out.println("子類主方法開始執行!!!!!");
        new child();
    }
}

3、執行子類child類中的main方法:

執行結果:

總結:

Java中的靜態變數和靜態程式碼塊是在類載入的時候就執行的,例項化物件時,先宣告並例項化變數再執行建構函式。如果子類繼承父類,則先執行父類的靜態變數和靜態程式碼塊,再執行子類的靜態變數和靜態程式碼塊。同樣,接著在執行父類和子類非靜態程式碼塊和建構函式。

注意:(靜態)變數和(靜態)程式碼塊的也是有執行順序的,與程式碼書寫的順序一致。在(靜態)程式碼塊中可以使用(靜態)變數,但是被使用的(靜態)變數必須在(靜態)程式碼塊前面宣告。

 最後給出執行步驟:

1、父類靜態變數和靜態程式碼塊(先宣告的先執行);

2、子類靜態變數和靜態程式碼塊(先宣告的先執行);

3、父類的變數和程式碼塊(先宣告的先執行);

4、父類的建構函式;

5、子類的變數和程式碼塊(先宣告的先執行);

6、子類的建構函式。