程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java純繼承與擴展

java純繼承與擴展

編輯:關於JAVA

學習繼承時,為了創建繼承分級結構,看來最明顯的方法是采取一種“純粹”的手段。也就是說,只有在基礎類或“接口”中已建立的方法才可在衍生類中被覆蓋,如下面這張圖所示:

可將其描述成一種純粹的“屬於”關系,因為一個類的接口已規定了它到底“是什麼”或者“屬於什麼”。通過繼承,可保證所有衍生類都只擁有基礎類的接口。如果按上述示意圖操作,衍生出來的類除了基礎類的接口之外,也不會再擁有其他什麼。
可將其想象成一種“純替換”,因為衍生類對象可為基礎類完美地替換掉。使用它們的時候,我們根本沒必要知道與子類有關的任何額外信息。如下所示:

也就是說,基礎類可接收我們發給衍生類的任何消息,因為兩者擁有完全一致的接口。我們要做的全部事情就是從衍生上溯造型,而且永遠不需要回過頭來檢查對象的准確類型是什麼。所有細節都已通過多形性獲得了完美的控制。
若按這種思路考慮問題,那麼一個純粹的“屬於”關系似乎是唯一明智的設計方法,其他任何設計方法都會導致混亂不清的思路,而且在定義上存在很大的困難。但這種想法又屬於另一個極端。經過細致的研究,我們發現擴展接口對於一些特定問題來說是特別有效的方案。可將其稱為“類似於”關系,因為擴展後的衍生類“類似於”基礎類——它們有相同的基礎接口——但它增加了一些特性,要求用額外的方法加以實現。如下所示:

盡管這是一種有用和明智的做法(由具體的環境決定),但它也有一個缺點:衍生類中對接口擴展的那一部分不可在基礎類中使用。所以一旦上溯造型,就不可再調用新方法:

若在此時不進行上溯造型,則不會出現此類問題。但在許多情況下,都需要重新核實對象的准確類型,使自己能訪問那個類型的擴展方法。在後面的小節裡,我們具體講述了這是如何實現的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved