理解JAVA多態__JAVA

來源:互聯網
上載者:User
理解JAVA多態 作者:mienflying 日期:2006-08-19   本文來自blogjava,我發現作者原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);

}

}

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

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

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

2.在衍生類別中,對於基類中的private方法,最好採用不同的名字。

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

4.對象清理的順序和建立的順序相反,當然前提是自己想手動清理對象,因為大家都知道Java記憶體回收行程。

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

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.