<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-55  評(píng)論-208  文章-0  trackbacks-0
    昨天在改一處代碼時(shí)發(fā)現(xiàn)執(zhí)行的過(guò)程和預(yù)想的不一樣,仔細(xì)探究才發(fā)現(xiàn)是構(gòu)造器執(zhí)行順序問(wèn)題.(汗自己一下,基礎(chǔ)不夠扎實(shí))
    特地做了一些嘗試然后把java構(gòu)造器的執(zhí)行順序整理出來(lái).
    首先是我測(cè)試的代碼:
    public class Son extends Father {
        SonProp r 
    = new SonProp();
        
    public Son() {
            System.out.println(
    "Son is construct");
        }

        
    public static void main(String[] args) {
            
    new Son();
        }

    }

    class Father {
        FatherProp SonProp 
    = new FatherProp();
        
    public Father() {
            System.out.println(
    "Father is construct");
        }

    }

    class SonProp {
        
    public SonProp() {
            System.out.println(
    "SonProp is construct");
        }

    }

    class FatherProp {
        
    public FatherProp() {
            System.out.println(
    "FatherProp is construct");
        }

    }
    執(zhí)行結(jié)果如下:
    FatherProp is construct
    Father is construct
    SonProp is construct
    Son is construct

    由此不難看出java類初始化時(shí)構(gòu)造函數(shù)調(diào)用順序:
      (1)初始化對(duì)象的存儲(chǔ)空間為零或null值;
      (2)按順序分別調(diào)用父類成員變量和實(shí)例成員變量的初始化表達(dá)式;
      (3)調(diào)用父類構(gòu)造函數(shù);(如果實(shí)用super()方法指定具體的某個(gè)父類構(gòu)造函數(shù)則使用指定的那個(gè)父類構(gòu)造函數(shù))
      (4)按順序分別調(diào)用類成員變量和實(shí)例成員變量的初始化表達(dá)式;
      (5)調(diào)用類本身構(gòu)造函數(shù)。

    posted on 2008-05-27 11:43 rocket 閱讀(8211) 評(píng)論(6)  編輯  收藏 所屬分類: 經(jīng)驗(yàn)積累

    評(píng)論:
    # re: 一個(gè)以前沒(méi)有注意的問(wèn)題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-27 11:46 | 基金凈值
    我也才知道,謝謝!  回復(fù)  更多評(píng)論
      
    # re: 一個(gè)以前沒(méi)有注意的問(wèn)題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-27 12:30 | 隔葉黃鶯
    借用我在 http://m.tkk7.com/cheneyfree/archive/2008/05/24/202643.html 里寫的回復(fù),再次貼來(lái)這里來(lái),與博主共勉

    1. 初始化分為為的初始化和實(shí)例的初始化
    2. 每個(gè)類在 JVM 中都對(duì)應(yīng)一個(gè) Class 實(shí)例
    3. 父類實(shí)例是作為子例的部分存在的 (Class 實(shí)例之間也存在父子關(guān)系)
    4. 初始化實(shí)例之前要初始化類

    基于以上幾點(diǎn)就可以理解以下初始化順序
    1. 父類靜態(tài)屬性、靜態(tài)類 (父類的初始化,對(duì)應(yīng) JVM 方法 cinit())
    2. 子類的靜態(tài)屬性、靜態(tài)類 (子類的初始化,對(duì)應(yīng) JVM 方法 cinit())
    3. 父類的實(shí)例構(gòu)造,實(shí)例變量初始化 (實(shí)例變量初始實(shí)際會(huì)放到 JVM 的 init() 中)
    4. 子類的實(shí)例構(gòu)造,實(shí)例變量初始化 (也是對(duì)應(yīng)的 init() 方法)

    關(guān)于類的 Class 實(shí)例,可以回想 Log 的聲明
    Log log = LogFactory.getLog(TestClass.class);
    也就是無(wú)論你,new 多少個(gè) TestClass 實(shí)例,它們對(duì)應(yīng)著同一個(gè) TestClass 的 Class 實(shí)例,也就是為什么很多地方把靜態(tài)方法、靜態(tài)屬性說(shuō)成是類的方法、類的屬性,其實(shí)質(zhì)就是在 JVM 中存在同一個(gè) Class 實(shí)例的方法、屬性,也就能保持一致性。

    關(guān)于父類實(shí)例是作為子類的一部分存在,可借鑒 C++ 或是有面向?qū)ο筇匦缘?C 函數(shù)庫(kù)(如 gtk),來(lái)理解,父類實(shí)例會(huì)居于子類實(shí)例的首地址,所以對(duì)子類轉(zhuǎn)型成父類實(shí)例時(shí),它是安全的,因?yàn)槭椎刂芬粯拥模詮氖椎刂返?size(父類)就是父類實(shí)例地址空間,到size(子類)就是子類實(shí)例的地址空間。  回復(fù)  更多評(píng)論
      
    # re: 一個(gè)以前沒(méi)有注意的問(wèn)題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-27 13:02 | rocket
    @隔葉黃鶯

    呵呵,還是我們的黃鶯扎實(shí)啊,以前還真沒(méi)有仔細(xì)研究過(guò)jvm。這就去仔細(xì)找資料看看。  回復(fù)  更多評(píng)論
      
    # re: 一個(gè)以前沒(méi)有注意的問(wèn)題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-27 17:33 | deathnote
    筆試了幾次,基礎(chǔ)很重要啊,收下了。。。。  回復(fù)  更多評(píng)論
      
    # re: 一個(gè)以前沒(méi)有注意的問(wèn)題:java構(gòu)造函數(shù)的執(zhí)行順序 2008-05-28 20:49 | Jack.Wang
    LZ 真強(qiáng)大,看來(lái)你的 oo 還是不行啊!
    最近聽(tīng)一個(gè)牛人(國(guó)外留學(xué)的 doctor),講中間件的時(shí)候講幾次內(nèi)存模型。真的受益匪淺,改天去你們公司分享一下!  回復(fù)  更多評(píng)論
      
    # re: 一個(gè)以前沒(méi)有注意的問(wèn)題:java構(gòu)造函數(shù)的執(zhí)行順序 2012-08-08 10:54 | 王鵬飛
    不錯(cuò),很有幫助  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲永久中文字幕在线| 国产高清不卡免费视频| 亚洲w码欧洲s码免费| 亚洲国产精品一区二区成人片国内| 免费高清在线爱做视频| 免费能直接在线观看黄的视频 | 无码日韩精品一区二区三区免费 | 精品97国产免费人成视频 | 免费看国产曰批40分钟| 在线看免费观看AV深夜影院| a级毛片免费高清毛片视频| 日本一区二区三区在线视频观看免费 | 国产成人高清亚洲| 国产成人3p视频免费观看| 日韩国产免费一区二区三区| 成人一区二区免费视频| 日本高清免费中文在线看| 苍井空亚洲精品AA片在线播放| 自拍日韩亚洲一区在线| 亚洲成人午夜电影| 久久亚洲AV成人无码软件| 亚洲AV无码一区二区乱孑伦AS| 久久久亚洲精品蜜桃臀| 亚洲精品WWW久久久久久| 午夜亚洲福利在线老司机| 国产免费看插插插视频| 日韩免费高清视频| 国产精品冒白浆免费视频| 在线看片无码永久免费aⅴ| 午夜影视在线免费观看| 好吊妞在线成人免费| 日韩免费毛片视频| 国产做床爱无遮挡免费视频| 国产免费人成视频在线观看| 国产美女被遭强高潮免费网站| 国产精品麻豆免费版| 免费看男女下面日出水视频| 亚洲精品久久久www| 亚洲综合网站色欲色欲| 国产亚洲福利精品一区| 亚洲综合一区二区精品导航 |