最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2013年06月04日 16:32:27   作者:  
本篇文章是對(duì)Java中父類與子類的加載順序進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
復(fù)制代碼 代碼如下:

class Parent {
    // 靜態(tài)變量
    public static String p_StaticField = "父類--靜態(tài)變量";
    // 變量(其實(shí)這用對(duì)象更好能體同這一點(diǎn),如專門寫一個(gè)類的實(shí)例)
  
    //如果這個(gè)變量放在初始化塊的后面,是會(huì)報(bào)錯(cuò)的,因?yàn)槟愀緵]有被初始化
    public String p_Field = "父類--變量";
    // 靜態(tài)初始化塊
    static {
        System.out.println(p_StaticField);
        System.out.println("父類--靜態(tài)初始化塊");
    }
    // 初始化塊
    {
        System.out.println(p_Field);
        System.out.println("父類--初始化塊");
    }
    // 構(gòu)造器
    public Parent() {
        System.out.println("父類--構(gòu)造器");
    }
}
public class SubClass extends Parent {
    // 靜態(tài)變量
    public static String s_StaticField = "子類--靜態(tài)變量";
    // 變量
    public String s_Field = "子類--變量";
    // 靜態(tài)初始化塊
    static {
        System.out.println(s_StaticField);
        System.out.println("子類--靜態(tài)初始化塊");
    }
    // 初始化塊
    {
        System.out.println(s_Field);
        System.out.println("子類--初始化塊");
    }
    // 構(gòu)造器
    public SubClass() {
        //super();
        System.out.println("子類--構(gòu)造器");
    }
    // 程序入口
    public static void main(String[] args) {
        System.out.println("*************in main***************");
        new SubClass();
        System.out.println("*************second subClass***************");
        new SubClass();
    }
}

輸出結(jié)果
父類--靜態(tài)變量
父類--靜態(tài)初始化塊
子類--靜態(tài)變量
子類--靜態(tài)初始化塊
*************in main***************
父類--變量
父類--初始化塊
父類--構(gòu)造器
子類--變量
子類--初始化塊
子類--構(gòu)造器
*************second subClass***************
父類--變量
父類--初始化塊
父類--構(gòu)造器
子類--變量
子類--初始化塊
子類--構(gòu)造器

結(jié)果分析:
很顯然在加載main方法后,靜態(tài)變量不管父類還是子類的都執(zhí)行了,然后才是父類和子類的的普通變量和構(gòu)造器。這是因?yàn)?,?dāng)要?jiǎng)?chuàng)建子類這個(gè)對(duì)象時(shí),發(fā)現(xiàn)這個(gè)類需要一個(gè)父類,所以把父類的.class加載進(jìn)來,然后依次初始化其普通變量和初始化代碼塊,最后其構(gòu)造器,然后可以開始子類的工作,把子類的.class加載進(jìn)來,在做子類的工作。

另外在Java中子類中都會(huì)有默認(rèn)的調(diào)用父類的默認(rèn)構(gòu)造函數(shù)即super(),當(dāng)僅僅有默認(rèn)構(gòu)造函數(shù)里
Java替你做了,我們可以做個(gè)實(shí)驗(yàn),如果在父類中注釋掉默認(rèn)構(gòu)造函數(shù),加一個(gè)有參的構(gòu)造函數(shù)時(shí),如果
子類中不加super(argument),此時(shí)會(huì)報(bào)語法錯(cuò)誤
如果我們把Main方法中的內(nèi)容全注釋掉,你會(huì)發(fā)現(xiàn)只會(huì)輸出

    父類--靜態(tài)變量
    父類--靜態(tài)初始化塊
    子類--靜態(tài)變量
        子類--靜態(tài)初始化塊
        其它不會(huì)輸出了。原因呢? 還要研究

相關(guān)文章

  • JDK SPI機(jī)制以及自定義SPI類加載問題

    JDK SPI機(jī)制以及自定義SPI類加載問題

    這篇文章主要介紹了JDK SPI機(jī)制以及自定義SPI類加載問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java 內(nèi)存模型中的happen-before關(guān)系詳解

    Java 內(nèi)存模型中的happen-before關(guān)系詳解

    這篇文章主要為大家介紹了Java 內(nèi)存模型中的happen-before關(guān)系示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦)

    第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦)

    這篇文章主要介紹了第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦) ,需要的朋友可以參考下
    2017-09-09
  • Java簡(jiǎn)單實(shí)現(xiàn)約瑟夫環(huán)算法示例

    Java簡(jiǎn)單實(shí)現(xiàn)約瑟夫環(huán)算法示例

    這篇文章主要介紹了Java簡(jiǎn)單實(shí)現(xiàn)約瑟夫環(huán)算法,簡(jiǎn)單描述了約瑟夫環(huán)問題,并結(jié)合實(shí)例形式分析了Java實(shí)現(xiàn)約瑟夫環(huán)的具體操作技巧,需要的朋友可以參考下
    2017-09-09
  • 詳解java中spring里的三大攔截器

    詳解java中spring里的三大攔截器

    在本篇文章里我們給大家詳細(xì)講述了java中spring里的三大攔截器相關(guān)知識(shí)點(diǎn)以及用法代碼,需要的朋友們學(xué)習(xí)下。
    2018-10-10
  • Activiti如何動(dòng)態(tài)獲取流程圖過程詳解

    Activiti如何動(dòng)態(tài)獲取流程圖過程詳解

    這篇文章主要介紹了Activiti如何動(dòng)態(tài)獲取流程圖過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot:JPA + AuditingEntityListener時(shí)區(qū)設(shè)置方式

    SpringBoot:JPA + AuditingEntityListener時(shí)區(qū)設(shè)置方式

    這篇文章主要介紹了SpringBoot:JPA + AuditingEntityListener時(shí)區(qū)設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • spring裝配bean的3種方式總結(jié)

    spring裝配bean的3種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于spring裝配bean的3種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 5分鐘搞定java單例模式

    5分鐘搞定java單例模式

    單例模式(Singleton?Pattern)是?Java?中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式,本文給大家介紹下java單例模式的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-03-03
  • java 拋出異常處理的方法

    java 拋出異常處理的方法

    這篇文章主要介紹了java 拋出異常處理的方法的相關(guān)資料,throws關(guān)鍵字通常被應(yīng)用在聲明方法時(shí),用來指定可能拋出的異常,這里就講下如何使用,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

常熟市| 南丹县| 洛宁县| 遂平县| 丰城市| 宝丰县| 邯郸县| 龙山县| 淮北市| 延庆县| 红河县| 太仓市| 三亚市| 阜南县| 来凤县| 永新县| 河池市| 靖边县| 隆化县| 武功县| 明溪县| 洛宁县| 永福县| 平谷区| 临澧县| 塔城市| 祁门县| 临安市| 包头市| 运城市| 保德县| 宁蒗| 宁波市| 颍上县| 晋江市| 龙井市| 海伦市| 曲周县| 芒康县| 京山县| 汤阴县|