<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 欧洲乱码伦视频免费国产| 亚洲国产模特在线播放| 黄色网址大全免费| 免费一级肉体全黄毛片| 亚洲国产精品久久久久秋霞小| 97免费人妻无码视频| 日韩精品免费一区二区三区| 国产一级婬片A视频免费观看| 国产免费人人看大香伊| 免费不卡视频一卡二卡| 亚洲免费福利视频| 免费无码又黄又爽又刺激| 亚洲男人的天堂久久精品| 免费鲁丝片一级在线观看| 色妞www精品视频免费看| 中文字幕第一页亚洲| 免费看搞黄视频网站| 亚洲专区中文字幕| 日本免费一本天堂在线| 久久国产免费直播| 亚洲黄网站wwwwww| 好爽好紧好大的免费视频国产| 免费看美女午夜大片| 亚洲Av无码精品色午夜| 久久久高清免费视频| 美女尿口扒开图片免费| 亚洲国产精品无码久久一线| 日本黄网站动漫视频免费| 精品国产日韩亚洲一区91| 亚洲精品无码成人AAA片| 国产91免费在线观看| 免费无码婬片aaa直播表情| 久久综合日韩亚洲精品色| 处破痛哭A√18成年片免费| caoporn成人免费公开| 亚洲免费观看在线视频| 久久久久亚洲爆乳少妇无 | 免费观看的毛片手机视频| 日亚毛片免费乱码不卡一区| 亚洲视频在线观看不卡| 国产一级淫片免费播放|