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

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

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

    tory320

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      10 隨筆 :: 0 文章 :: 1 評論 :: 0 Trackbacks

    重載overloading和覆寫overriding哪個更早執(zhí)行-- visitor幫助篇

    重載overloading和覆寫overriding哪個更早執(zhí)行--?? visitor幫助篇
    一:問題提出
    雖然我們經常寫程序用到重載和覆寫,但是很少會考慮他們的執(zhí)行順序。下邊的內容就是關于,他們同時出現(xiàn)時
    哪個先起作用:
    二:問題分析
    Java是"動態(tài)單分派靜態(tài)多分派語言",這個定義已經多次提起,如果你不了解這些概念,看這里"visitor模式準備"
    所以就注定了重載(靜態(tài)多分派)要早于覆寫(動態(tài)單分派),因為靜態(tài)分派是編繹期實現(xiàn)的,動態(tài)分派是執(zhí)行期實現(xiàn)的。
    三:驗證
    簡單驗證一下,順變提高記憶

    ?1 public ? class ?Parent? {
    ?2 ???? public ? void ?run(Object?o) {
    ?3 ????????System.out.println( " in?Parent?+param:object " );
    ?4 ????}

    ?5 ???? public ? void ?run( int ?i) {
    ?6 ????????System.out.println( " in?Parent?+?param:int " );
    ?7 ????}

    ?8 }

    ?9
    10 public ? class ?Child? extends ?Parent? {
    11
    12 ???? public ? void ?run(Object?o) {
    13 ????????System.out.println( " in?Child?+param:Object " );
    14 ????}

    15 ???? public ? void ?run(String?str) {
    16 ????????System.out.println( " in?Child?+?param:String " );
    17 ????}

    18 ???? public ? static ? void ?main(String[]?args)? {
    19 ????????Parent?p? = ? new ?Child();
    20 ????????String?str? = ? new ?String();
    21 ????????p.run(str);
    22 ????}

    23 }


    運行結果是什么?
    in Child +param:Object
    inChild是確認的,但是為什么是object,而不是String,我們放入的就是String啊。
    首先來分析執(zhí)行過程。
    定義韋類型Parent p在執(zhí)行run(Str)的時候,

    1,如果是先執(zhí)行重載,然後是執(zhí)行覆寫的過程
    重載時因為找不到對應的String參數(shù)的函數(shù),所以定位到接受父類的run(Object o)函數(shù),
    覆寫時因為傳入時父類告訴子類的對象類型是Object,所以執(zhí)行run(Object o);
    正是我們看到的結果,所以在Java中執(zhí)行的順序是這樣的。

    2,為了對比,說一下先覆寫后重載的過程
    如果是先覆寫,再重載
    覆寫時因為確定對象實際是子類,所以直接覆寫到Child,然後重載,發(fā)現(xiàn)有對應的String為參數(shù)的函數(shù)
    執(zhí)行,run(String str);
    應該輸出的結果:in Child +param:String
    但我們看到結果顯然是1,所以驗證了Java是先重載后覆寫的。


    最后的部分:

    看完本文,如果你對visitor模式有更多的興趣,想了解更多請看如下幾篇文章。
    1,靜態(tài)分派,動態(tài)分派,多分派,單分派 --------------?? visitor模式準備
    2,訪問差異類型的集合類 ------------------------?? visitor模式入門
    3,visitor模式理論及學術概念-------------------?? visitor模式深入
    4,visitor模式和其它模式的比較和關系-------------?? visitor模式總結?
    5,重載overloading和覆寫overriding哪個更早執(zhí)行--?? visitor幫助篇 (本文)
    雖然排列順序是1,2,3,4,5 但是我個人建議的學習方式是2,1,3,4,5因為這個順序更方便一般人理解

    posted on 2006-12-18 22:38 tory 閱讀(243) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 中字幕视频在线永久在线观看免费| 亚洲sss综合天堂久久久| 亚洲乱妇熟女爽到高潮的片| 97国产免费全部免费观看| 亚洲国产精品综合久久2007| 免费无码A片一区二三区| 国产精品亚洲专区无码牛牛| 免费a级毛片大学生免费观看 | 最近2022中文字幕免费视频| 亚洲国产精品一区二区久| 国产又黄又爽又猛的免费视频播放| 美国免费高清一级毛片| 久久综合图区亚洲综合图区| 1a级毛片免费观看| 国产精品亚洲精品爽爽| 亚洲精品天堂在线观看| 亚洲熟妇无码AV在线播放| 久久精品无码专区免费东京热| 中文永久免费观看网站| 亚洲激情视频网站| 免费国产在线观看老王影院| 好爽又高潮了毛片免费下载| a免费毛片在线播放| 久久精品国产亚洲av麻豆图片| 亚洲成A人片在线观看中文| 在线观看免费播放av片| 国产精品亚洲片夜色在线| 亚洲精品在线网站| 亚洲性69影院在线观看| 91亚洲国产成人久久精品网址 | 亚欧人成精品免费观看| 日韩免费码中文在线观看| 日韩精品一区二区亚洲AV观看 | 亚洲日韩AV一区二区三区四区 | 永久免费av无码不卡在线观看| 国产精品久久永久免费| 国产1024精品视频专区免费 | 亚洲国产美女精品久久久| 亚洲国产老鸭窝一区二区三区| 免费成人在线观看| 亚洲男人在线无码视频|