java類內部程式碼執行順序

jxaa0965發表於2022-12-05

先看以下程式碼

public class HelloB extends HelloA{    public HelloB()
    {
    }
    {
        System.out.println("I’m B class");
    }    static
    {
        System.out.println("static B");
    }    public static void main(String[] args)
    {        new HelloB();
    }
}class HelloA{    public HelloA()
    {
    }
    {
        System.out.println("I’m A class");
    }    static
    {
        System.out.println("static A");
    }
}

執行程式碼後輸出
static A
static B
I’m A class
I’m B class

該問題涉及:靜態初始化程式碼塊、構造程式碼塊、構造方法
當涉及到繼承時,按照如下順序執行:
1、執行父類的靜態程式碼塊

    static {
        System.out.println("static A");
    }

輸出:static A
2、執行子類的靜態程式碼塊

static {
        System.out.println("static B");
    }

輸出:static B
3、執行父類的構造程式碼塊

    {
        System.out.println("I’m A class");
    }

輸出:I'm A class
4、執行父類的建構函式

    public HelloA() {
    }

輸出:無
5、執行子類的構造程式碼塊

    {
        System.out.println("I’m B class");
    }

輸出:I'm B class
6、執行子類的建構函式

    public HelloB() {
    }

輸出:無


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019613/viewspace-2926774/,如需轉載,請註明出處,否則將追究法律責任。

相關文章