Java 多態(8)

在面向對象的程序設計語言中,多態是繼數據抽象和繼承以後的第三種基本特徵。安全

1.再論向上轉型

  • 多態做用:消除類型之間的耦合關係.

2.起色

  • 綁定:將一個方法調用同一個方法主體關聯起來.
  • 前期綁定:在程序執行前就進行綁定(面向過程語言默認綁定方式).
  • 後期綁定:也叫動態綁定或運行時綁定,在運行時根據對象的類型進行綁定.
  • Java中除了static方法和final方法(private方法屬於final方法)以外,其餘全部的方法都是後期綁定.
  • 只有普通的方法調用能夠是多態的(任何域訪問操做都將由編譯器解析,所以不是多態的).
  • 若是某個方法是靜態的,它的行爲就不具備多態性(靜態方法是與類,而非與單個的對象相關聯的).

3.構造器和多態

  • 構造器並不具備多態性(隱式聲明的static方法).
  • 構造器的調用順序:1.調用基類構造器,反覆遞歸;2.按聲明順序調用成員的初始化方法;3.調用導出類構造器 的主體.
  • 構造器的調用順序是很重要的.再構造器內部,必須確保所要使用的成員都已經構建完畢.
  • 經過組合和繼承方法來建立新類時,永遠沒必要擔憂對象的清理問題,子對象一般都會留給垃圾回收器進行處理.
  • 對象銷燬的順序應該和初始化順序(聲明順序,初始化時按照聲明順序進行的)相反.
  • 對於基類,應該首先對其導出類進行清理,而後纔是基類.
  • 成員對象中存在於其餘一個或多個對象共享的狀況,須要使用"引用計數"來跟蹤仍舊訪問者共享的對象數量.
  • 初始化的實際過程:1.在其餘任何事物發生以前,將分配給對象的存儲空間初始化成二進制的零;2.調用基類構造器;3.按照聲明的順序調用成員的初始化方法;4.調用導出類的構造器主體.
  • 準則:用盡量簡單的方法使對象進入正常狀態;若是能夠的話,避免調用其它方法.
  • 在構造器內部惟一可以安全調用的方法是基類中的final方法(也適用於private方法),由於這些方法不能被覆蓋.

4.協變返回類型

  • Java SE5中添加了協變返回類型,它表示在導出類中的被覆蓋方法能夠返回基類方法的返回類型的某種導出類型.

5.用繼承進行設計

  • 不能在運行期間決定繼承不一樣的對象,由於它要求在便宜期間徹底肯定下來.
  • 準則:用繼承表達行爲間的差別,並用字段表達狀態上的變化.
  • 純繼承:"is-a",擴展:"is-like-a".
  • 擴展缺點:導出類中接口的擴展部分不能被基類訪問,所以,一旦使用向上轉型,就不能調用那些新方法.
  • 向下轉型(cast):在繼承層次中向下移動,可以獲取類型信息.
  • Java中全部轉型都會獲得檢查.

END設計

相關文章
相關標籤/搜索