塊,靜態塊代碼執行順序 原

public class Main {

    public static void main(String[] args) {
        System.out.println("main start---------");
        new B();
        new A();
        System.out.println("main end---------");
    }
}

class A{
    public A() {
        System.out.println("Hello A");
    }
    {
        System.out.println("I'm A");
    }
    static {
        System.out.println("I'm static A");
    }
}

class B extends A{
    public B() {
        System.out.println("Hello B");
    }
    {
        System.out.println("I'm B");
    }
    static {
        System.out.println("I'm static B");
    }
}

//輸出結果:
main start---------
I'm static A
I'm static B
I'm A
Hello A
I'm B
Hello B
I'm A
Hello A
main end---------
class A{
	public A() {
		System.out.println("構造 A");
	}
	{
		System.out.println("A block");
	}
	static {
		System.out.println("static A block");
	}
}

public class B extends A{
	public B() {
		System.out.println("構造 B");
	}
	{
		System.out.println("B block");
	}
	static {
		System.out.println("static B block");
	}
	public static void main(String[] args) {
		System.out.println("-----main start-------");
		new B();
		new A();
		System.out.println("-----main end---------");
	}
}

//執行結果:
static A block
static B block
-----main start-------
A block
構造 A
B block
構造 B
A block
構造 A
-----main end---------

//執行順序:(優先級從高到低。)靜態代碼塊>mian方法>構造代碼塊>構造方法。

其中靜態代碼塊只執行一次。構造代碼塊在每次創建對象是都會執行。

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