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

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

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

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數據加載中……

    多態學習心得

    作者:Flyingis

        這幾天我在重新復習
    Java語言基礎,雖然和團隊一起,自己個人都進行了實際項目的開發,但越往上面走越覺得自己應該花點時間看看Java的基礎知識,鞏固一下基礎。今天復習的是多態,同時寫下自己的學習心得。

    數據抽象、繼承和多態是面向對象程序設計語言的三大特性。多態,我覺得它的作用就是用來將接口和實現分離開,改善代碼的組織結構,增強代碼的可讀性。在某些很簡單的情況下,或許我們不使用多態也能開發出滿足我們需要的程序,但大多數情況,如果沒有多態,就會覺得代碼極其難以維護。

    Java中,談論多態就是在討論方法調用的綁定,綁定就是將一個方法調用同一個方法主體關聯起來。在C語言中,方法(C中稱為函數)的綁定是由編譯器來實現的,在英文中稱為early binding(前期綁定),因此,大家自然就會想到相對應的late binding(后期綁定),這在Java中通常叫做run-time binding(運行時綁定),我個人覺得這樣稱呼更貼切,運行時綁定的目的就是在代碼運行的時候能夠判斷對象的類型。通過一個簡單的例子說明:

    /**

     * 定義一個基類

     */

    public Class Parents {

      public void print() {

        System.out.println(“parents”);

    }

    }

    /**

     * 定義兩個派生類

     */

    public Class Father extends Parents {

      public void print() {

        System.out.println(“father”);

    }

    }

    public Class Mother extends Parents {

      public void print() {

        System.out.println(“mother”);

    }

    }

    /**

     * 測試輸出結果的類

     */

    public Class Test {

      public void find(Parents p) {

        p.print();

    }

    public static void main(String[] args) {

      Test t = new Test();

      Father f = new Father();

      Mother m = new Mother();

      t.find(f);

      t.find(m);

    }

    }

    最后的輸出結果分別是fathermother,將派生類的引用傳給基類的引用,然后調用重寫方法,基類的引用之所以能夠找到應該調用那個派生類的方法,就是因為程序在運行時進行了綁定。

    學過Java基礎的人都能很容易理解上面的代碼和多態的原理,但是仍有一些關鍵的地方需要注意的,算是自己對多態的一個小結:

    1.        Java中除了staticfinal方法外,其他所有的方法都是運行時綁定的。在我另外一篇文章中說到private方法都被隱式指定為final的,因此final的方法不會在運行時綁定。當在派生類中重寫基類中static、final、或private方法時,實質上是創建了一個新的方法。

    2.        在派生類中,對于基類中的private方法,最好采用不同的名字。

    3.        包含抽象方法的類叫做抽象類。注意定義里面包含這樣的意思,只要類中包含一個抽象方法,該類就是抽象類。抽象類在派生中就是作為基類的角色,為不同的子類提供通用的接口。

    4.        對象清理的順序和創建的順序相反,當然前提是自己想手動清理對象,因為大家都知道Java垃圾回收器。

    5.        在基類的構造方法中小心調用基類中被重寫的方法,這里涉及到對象初始化順序。

    6.        構造方法是被隱式聲明為static方法。

    7.        用繼承表達行為間的差異,用字段表達狀態上的變化。

    posted on 2005-10-31 19:28 Flyingis 閱讀(1183) 評論(1)  編輯  收藏 所屬分類: JavaSE

    評論

    # re: 多態學習心得  回復  更多評論   

    怎么 跟Think in java說的一模一樣 沒有新意!
    類實例的引用就是指向一個句柄(handle)的指針,而該句柄(handle)其實是一對指針:其中一個指針指向一張表,該表格包含了對象的方法列表以及一個指向類對象(表示對象類型)的指針;另一個指針指向一塊內存地址,該內存是從java堆中為對象的數據而分配出來的。
    這是最基礎的.你還要想想為什么JAVA中可以動態綁定以什么樣的機制保證的.
    2006-10-24 21:35 | java[匿名]
    主站蜘蛛池模板: 亚洲制服丝袜第一页| 性xxxx视频免费播放直播| 亚洲第一成人影院| 亚洲综合精品香蕉久久网| 日本特黄特色AAA大片免费| 亚洲午夜成人精品电影在线观看 | 久久久久久a亚洲欧洲aⅴ| GOGOGO免费观看国语| 亚洲日本va午夜中文字幕一区| 久草视频在线免费看| 亚洲视频在线观看网站| 国拍在线精品视频免费观看| 国产亚洲精品影视在线| 免费欧洲美女牲交视频| 国产va免费观看| 久久精品国产亚洲AV无码麻豆| 中国人xxxxx69免费视频| 亚洲情A成黄在线观看动漫软件 | 久久久久久久99精品免费观看| 亚洲va国产va天堂va久久| 3344永久在线观看视频免费首页| 亚洲影视自拍揄拍愉拍| 免费v片在线观看品善网| 国产成人AV免费观看| 亚洲制服丝袜中文字幕| 亚洲精品国产精品乱码不卞 | 男人都懂www深夜免费网站| 亚洲精品国产成人中文| 国产精品99久久免费| 精品国产污污免费网站| 亚洲av永久无码精品天堂久久| 亚洲 小说区 图片区 都市| 最近免费中文字幕MV在线视频3| 亚洲一区二区免费视频| 亚洲Av无码乱码在线znlu| 最近中文字幕国语免费完整 | 中文字幕亚洲激情| 69堂人成无码免费视频果冻传媒 | 亚洲人成网站在线播放2019| 亚洲乱码中文字幕综合234| 国产2021精品视频免费播放|