1. 鯨魚和奶牛
這是一個有趣的動物學事實:一頭牛與鯨魚的關係比與河馬的關係要近得多。原來牛和鯨是比較近的親戚。
看這裡。讓我們來介紹一下多態性——OOP的另一個非常強大的工具。它有四個特點。
2.繼承不是萬能的
想像一下,您已經Cow
為遊戲編寫了一個類。它有很多領域和方法。這個類的對象可以做各種事情:走路、吃飯和睡覺。奶牛還戴著鈴鐺,走路時會響起。假設您已經將類中的所有內容都實現到了最小的細節。
然後你的客戶來了,說她想發布一個新的遊戲關卡,其中所有的動作都發生在海上,主角是一頭鯨魚。
你開始設計一個Whale
類,並意識到它與類只是略有不同Cow
。這兩個類的邏輯非常相似,您決定使用繼承。
該類Cow
非常適合承擔父類的角色:它具有所有必要的變量和方法。我們所需要做的就是賦予鯨魚游泳的能力。但有一個問題:你的鯨魚有腿、角和鈴鐺。畢竟,這個功能是在Cow
類內部實現的。這裡可以做什麼?
3.方法覆蓋
方法覆蓋來拯救我們。如果我們在新類中繼承的方法不能完全滿足我們的要求,我們可以用另一個方法替換該方法。
這是怎麼做到的?在我們的後代類中,我們聲明與我們要覆蓋的父類方法相同的方法。我們在其中編寫新代碼。就是這樣——就好像父類中的舊方法根本不存在一樣。
它是這樣工作的:
代碼 | 描述 |
---|---|
|
|
|
此代碼在屏幕上顯示以下文本:
|
|
此代碼在屏幕上顯示以下內容:
|
繼承Cow
類並重寫printName
方法後,該類Whale
實際上包含以下數據和方法:
|
我們不知道任何舊方法。 |
GO TO FULL VERSION