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

等價和類似關系

編輯:關於JAVA

針對繼承可能會產生這樣的一個爭論:繼承只能改善原基礎類的函數嗎?若答案是肯定的,則衍生類型就是與基礎類完全相同的類型,因為都擁有完全相同的接口。這樣造成的結果就是:我們完全能夠將衍生類的一個對象換成基礎類的一個對象!可將其想象成一種“純替換”。在某種意義上,這是進行繼承的一種理想方式。此時,我們通常認為基礎類和衍生類之間存在一種“等價”關系——因為我們可以理直氣壯地說:“圓就是一種幾何形狀”。為了對繼承進行測試,一個辦法就是看看自己是否能把它們套入這種“等價”關系中,看看是否有意義。
但在許多時候,我們必須為衍生類型加入新的接口元素。所以不僅擴展了接口,也創建了一種新類型。這種新類型仍可替換成基礎類型,但這種替換並不是完美的,因為不可在基礎類裡訪問新函數。我們將其稱作“類似”關系;新類型擁有舊類型的接口,但也包含了其他函數,所以不能說它們是完全等價的。舉個例子來說,讓我們考慮一下制冷機的情況。假定我們的房間連好了用於制冷的各種控制器;也就是說,我們已擁有必要的“接口”來控制制冷。現在假設機器出了故障,我們把它換成一台新型的冷、熱兩用空調,冬天和夏天均可使用。冷、熱空調“類似”制冷機,但能做更多的事情。由於我們的房間只安裝了控制制冷的設備,所以它們只限於同新機器的制冷部分打交道。新機器的接口已得到了擴展,但現有的系統並不知道除原始接口以外的任何東西。
認識了等價與類似的區別後,再進行替換時就會有把握得多。盡管大多數時候“純替換”已經足夠,但您會發現在某些情況下,仍然有明顯的理由需要在衍生類的基礎上增添新功能。通過前面對這兩種情況的討論,相信大家已心中有數該如何做。

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