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

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

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

    tory320

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

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

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

    ?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啊。
    首先來分析執行過程。
    定義韋類型Parent p在執行run(Str)的時候,

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

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


    最后的部分:

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

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

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


    網站導航:
     
    主站蜘蛛池模板: japanese色国产在线看免费| 国产午夜亚洲精品不卡| 精品视频在线免费观看| 亚洲午夜av影院| 日韩精品免费一线在线观看| www.91亚洲| 成人特级毛片69免费观看| 亚洲午夜爱爱香蕉片| 五月天婷婷免费视频| 国产性爱在线观看亚洲黄色一级片| 高清免费久久午夜精品| 亚洲国产精品成人久久蜜臀| 又长又大又粗又硬3p免费视频| 亚洲国产成人爱av在线播放| aaa毛片视频免费观看| 亚洲国产成人久久综合一| 人与禽交免费网站视频| 在线aⅴ亚洲中文字幕| 免费中文字幕一级毛片| 本道天堂成在人线av无码免费 | 亚洲成在人线aⅴ免费毛片| 国产精品亚洲专区在线观看| 日韩免费无砖专区2020狼| 免费的黄网站男人的天堂| 欧洲亚洲国产清在高| 日韩精品成人无码专区免费| 国产亚洲精品AAAA片APP | 免费a级毛片在线观看| 国产免费播放一区二区| 亚洲美免无码中文字幕在线| 亚洲第一成年免费网站| 一边摸一边桶一边脱免费视频| 国产成人精品日本亚洲| 男女做羞羞的事视频免费观看无遮挡 | 国内精品99亚洲免费高清| 91亚洲精品视频| 四虎永久免费地址在线网站| 三年片免费高清版| 67194在线午夜亚洲| 亚洲成a人片在线观看老师| 久草免费福利资源站|