丄諦啲仇魜ヤ
          如 果 敵 人 讓 你 生 氣 , 那 說 明 你 沒 有 勝 他 的 把 握!
          posts - 6,comments - 56,trackbacks - 1
          數據抽象、繼承和多態是面向對象程序設計語言的三大特性。多態,我覺得它的作用就是用來將接口和實現分離開,改善代碼的組織結構,增強代碼的可讀性。在某些很簡單的情況下,或許我們不使用多態也能開發出滿足我們需要的程序,但大多數情況,如果沒有多態,就會覺得代碼極其難以維護。
          在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);
           }
          }
          最后的輸出結果分別是father和mother,將派生類的引用傳給基類的引用,然后調用重寫方法,基類的引用之所以能夠找到應該調用那個派生類的方法,就是因為程序在運行時進行了綁定。
          學過Java基礎的人都能很容易理解上面的代碼和多態的原理,但是仍有一些關鍵的地方需要注意的,算是自己對多態的一個小結:
          1.Java中除了static和final方法外,其他所有的方法都是運行時綁定的。在我另外一篇文章中說到private方法都被隱式指定為final的,因此final的方法不會在運行時綁定。當在派生類中重寫基類中static、final、或private方法時,實質上是創建了一個新的方法
          2.在派生類中,對于基類中的private方法,最好采用不同的名字。
          3.包含抽象方法的類叫做抽象類。注意定義里面包含這樣的意思,只要類中包含一個抽象方法,該類就是抽象類。抽象類在派生中就是作為基類的角色,為不同的子類提供通用的接口。
          4.對象清理的順序和創建的順序相反,當然前提是自己想手動清理對象,因為大家都知道Java垃圾回收器。
          5.在基類的構造方法中小心調用基類中被重寫的方法,這里涉及到對象初始化順序。
          6.構造方法是被隱式聲明為static方法。
          7.用繼承表達行為間的差異,用字段表達狀態上的變化。
          posted on 2007-11-09 09:19 Crying 閱讀(381) 評論(0)  編輯  收藏 所屬分類: JAVA基礎
          主站蜘蛛池模板: 嘉荫县| 郴州市| 北海市| 新竹市| 特克斯县| 时尚| 砀山县| 三台县| 长武县| 马关县| 冕宁县| 双流县| 濮阳市| 南康市| 准格尔旗| 卢龙县| 祥云县| 华阴市| 绍兴市| 海兴县| 长葛市| 苗栗县| 内乡县| 高陵县| 河曲县| 天等县| 河间市| 顺昌县| 东安县| 册亨县| 宜兰县| 滁州市| 三门峡市| 临夏市| 务川| 革吉县| 镇巴县| 大理市| 龙山县| 永安市| 崇礼县|