java靜態類,塊語句相關執行順序

面試中碰到的一個面試題,其實我還記得我在《Java編程思想》中也看到過,可能當時還是理解的不夠透徹,所以還是沒有做對。

A類:

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

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

    A() {
        System.out.print("C");
    }

    A(int i) {
        System.out.print("D");
    }

    public static void main(String[] args) {
        B b = new B(10);
    }

}

B類:

public class B extends A {
    {
        System.out.print("E");
    }

    static {
        System.out.print("F");
    }

    B() {
        System.out.print("H");
    }

    B(int i) {
        System.out.print("G");
    }


}

執行結果打印是怎樣呢?

 

 

 

 

BFACEG

 

也就是靜態方法,塊語句和構造方法都是優先執行父類的!靜態方法優先塊語句,塊語句優先於構造方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章