程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺談Java中父類與子類的加載次序詳解

淺談Java中父類與子類的加載次序詳解

編輯:關於JAVA

淺談Java中父類與子類的加載次序詳解。本站提示廣大學習愛好者:(淺談Java中父類與子類的加載次序詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談Java中父類與子類的加載次序詳解正文



class Parent {
    // 靜態變量
    public static String p_StaticField = "父類--靜態變量";
    // 變量(其實這用對象更好能體同這一點,如專門寫一個類的實例)
  
    //假如這個變量放在初始化塊的前面,是會報錯的,由於你基本沒有被初始化
    public String p_Field = "父類--變量";
    // 靜態初始化塊
    static {
        System.out.println(p_StaticField);
        System.out.println("父類--靜態初始化塊");
    }
    // 初始化塊
    {
        System.out.println(p_Field);
        System.out.println("父類--初始化塊");
    }
    // 結構器
    public Parent() {
        System.out.println("父類--結構器");
    }
}
public class SubClass extends Parent {
    // 靜態變量
    public static String s_StaticField = "子類--靜態變量";
    // 變量
    public String s_Field = "子類--變量";
    // 靜態初始化塊
    static {
        System.out.println(s_StaticField);
        System.out.println("子類--靜態初始化塊");
    }
    // 初始化塊
    {
        System.out.println(s_Field);
        System.out.println("子類--初始化塊");
    }
    // 結構器
    public SubClass() {
        //super();
        System.out.println("子類--結構器");
    }
    // 法式進口
    public static void main(String[] args) {
        System.out.println("*************in main***************");
        new SubClass();
        System.out.println("*************second subClass***************");
        new SubClass();
    }
}

輸入成果
父類--靜態變量
父類--靜態初始化塊
子類--靜態變量
子類--靜態初始化塊
*************in main***************
父類--變量
父類--初始化塊
父類--結構器
子類--變量
子類--初始化塊
子類--結構器
*************second subClass***************
父類--變量
父類--初始化塊
父類--結構器
子類--變量
子類--初始化塊
子類--結構器

成果剖析:
很明顯在加載main辦法後,靜態變量不論父類照樣子類的都履行了,然後才是父類和子類的的通俗變量和結構器。這是由於,當要創立子類這個對象時,發明這個類須要一個父類,所以把父類的.class加載出去,然後順次初始化其通俗變量和初始化代碼塊,最初其結構器,然後可以開端子類的任務,把子類的.class加載出去,在做子類的任務。

別的在Java中子類中都邑有默許的挪用父類的默許結構函數即super(),當僅唯一默許結構函數裡
Java替你做了,我們可以做個試驗,假如在父類中正文失落默許結構函數,加一個有參的結構函數時,假如
子類中不加super(argument),此時會報語法毛病
假如我們把Main辦法中的內容全正文失落,你會發明只會輸入

    父類--靜態變量
    父類--靜態初始化塊
    子類--靜態變量
        子類--靜態初始化塊
        其它不會輸入了。緣由呢? 還要研討
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved