<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)站導航:
     
    主站蜘蛛池模板: 三年片在线观看免费西瓜视频| 国产成人yy免费视频| 亚洲AV福利天堂一区二区三| 国产精品色拉拉免费看| 精品亚洲av无码一区二区柚蜜| 中文字幕一精品亚洲无线一区| 人妻丰满熟妇无码区免费 | 亚洲神级电影国语版| 免费国产a国产片高清网站| 免费国产在线视频| 亚洲欧美日韩综合久久久| 国产精品亚洲а∨无码播放| 噼里啪啦电影在线观看免费高清| 羞羞视频免费网站含羞草| 亚洲综合激情视频| 亚洲成a人在线看天堂无码| 色片在线免费观看| 国产99久久久久久免费看| 日韩亚洲不卡在线视频中文字幕在线观看| 亚洲天堂中文字幕在线| 无人在线观看免费高清视频| 在线观看人成视频免费无遮挡 | 亚洲Av永久无码精品一区二区| 亚洲AV综合色区无码一区爱AV| 日韩一级视频免费观看| 2019中文字幕在线电影免费| 久久WWW免费人成—看片| 精品国产亚洲第一区二区三区| 亚洲日韩乱码中文无码蜜桃臀| 久久国产成人亚洲精品影院| 精品国产免费观看久久久| 日韩av无码久久精品免费| 91成人免费观看在线观看| 综合偷自拍亚洲乱中文字幕 | 免费福利资源站在线视频| 亚洲日本久久一区二区va| 亚洲精品乱码久久久久久蜜桃不卡| 在线视频免费国产成人| 久草在视频免费福利| 亚洲成人免费在线| 91视频免费观看|