創建派生類對象時,構造函數的執行順序


父類的靜態變量賦值---》父類的靜態代碼塊---》子類的靜態變量賦值--》子類的靜態代碼塊--》父類的非靜態變量賦值--》父類的非靜態代碼塊--》父類的構造函數--》子類的非靜態變量賦值--》子類的非靜態代碼塊--》子類的構造函數。

public class Test5 {

    public static void main(String[] args) {
        Cat cat = new Cat();

    }

}
class Animal{
    public static String name="父類";
    public String sex = "雄性";
    static {
        System.out.println("我是父類的靜態代碼塊,現在靜態變量已被賦值為:"+name);
    }
    {
        System.out.println("我是父類的非靜態代碼塊,現在非靜態變量已經被賦值為:"+sex);
    }
    public Animal() {
        System.out.println("我是父類的構造函數");
    }
}
class Cat extends Animal{
    public static  String s_name = "子類";
    public String  age = "17歲";
    static {
        System.out.println("我是子類的靜態代碼塊,現在我的靜態變量已經被賦值為:"+s_name);
        
    }
    {
        System.out.println("我是子類的非靜態代碼塊,現在我的非靜態變量已被賦值為:"+age);
    }
    public Cat() {
        System.out.println("我是子類的的構造函數");
    }
}

運行結果;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM