java 靜態代碼塊 構造代碼塊 構造方法

直接上代碼 java

public class Study {

    public Study(){//構造方法
        System.out.println("init");
    }

    {//構造代碼塊
        System.out.println("hehe");
    }

    static {//靜態代碼塊
        System.out.println("haha");
    }

    public static void main(String[] args) {
        Study s1 = new Study();
        Study s2 = new Study();
    }
}

執行結果code

結論:1)靜態代碼塊優先執行而且只執行一次。2)構造代碼塊優先構造方法執行,而且每次調用構造方法都會執行。blog

 

在繼承的狀況下繼承

public class Study {

    public Study(){//構造方法
        System.out.println("老子構造方法");
    }

    {//構造代碼塊
        System.out.println("老子構造代碼塊");
    }

    static {//靜態代碼塊
        System.out.println("老子靜態代碼塊");
    }

    public static void main(String[] args) {
        Study s1 = new Study1();
        Study s2 = new Study1();
    }
}

class Study1 extends Study{
    public Study1(){//構造方法
        System.out.println("兒子構造方法");
    }

    {//構造代碼塊
        System.out.println("兒子構造代碼塊");
    }

    static {//靜態代碼塊
        System.out.println("兒子靜態代碼塊");
    }
}

結論:1)靜態代碼塊老是優先執行。2)父類構造塊構造方法優先子類構造塊構造方法。it

相關文章
相關標籤/搜索