1. 程式人生 > 其它 >JAVA-繼承中的靜態程式碼塊執行順序

JAVA-繼承中的靜態程式碼塊執行順序

技術標籤:JAVA

父類

package FuZi;

public class Fu {
    public Fu() {
        System.out.println("父類構造方法");
    }

    //父類靜態程式碼塊
    static {
        System.out.println("父類靜態程式碼塊,位元組碼檔案載入即執行,只執行一次");
    }
    public void Fathers(){
        System.out.println("父類公有方法");
    }
{ System.out.println("父類非靜態程式碼塊"); } public static void main(String[] args) { System.out.println("父類main方法"); } }

子類

package FuZi;

public class Zi extends Fu{
    public Zi() {
        System.out.println("子類無參構造");
    }

    static
{ System.out.println("子類靜態程式碼塊,位元組碼檔案載入即執行,且執行一次"); } { System.out.println("子類非靜態程式碼塊"); } public void Zition(){ System.out.println("子類非靜態程式碼塊"); } public static void main(String[] args) { System.out.println("子類 main 方法"
); //new Zi(); } }

呼叫

package FuZi;

public class TextDemo {
    public static void main(String[] args) {
        Zi zi = new Zi();//建立子類物件
        zi.Fathers();//子類物件呼叫父類公有方法
    }
}

執行結果 先靜(父子)後非靜(父子)再構造(父子)

父類靜態程式碼塊,位元組碼檔案載入即執行,只執行一次
子類靜態程式碼塊,位元組碼檔案載入即執行,且執行一次
父類非靜態程式碼塊
父類構造方法
子類非靜態程式碼塊
子類無參構造
=========
父類公有方法

Process finished with exit code 0