Re: [問題] 繼承、界面、抽象

作者: newlinuxer (新麗仕人)   2015-04-10 20:16:27
如果是要了解如何利用interface/abstract class來達到多型、鬆耦合等目的,
卡卡西的例子還滿棒的~
如果是要了解interface和abstract class的差異,
建議可以在本版搜尋關鍵字interface, 可以找到很多相關討論~
整理一下自己爬文後粗淺的理解(覺得其中godfat大大說的特別好):
interface的實作可以視為"弱化"的多重繼承~
由於class的多重繼承有很多問題(其實我也不懂), 所以Java採用單一繼承,
而需要用到多重繼承的時候, 就透過介面的實作來達到目的~
由於介面規定只能有抽象的方法, 沒有成員變數和方法實作,
所以可以避免掉一些多重繼承產生的問題/複雜性~
至於為什麼沒有成員變數和方法實作就能避免掉某些多重繼承產生的問題/複雜性?
揪竟避免掉了什麼問題呢? 這也是我想問的XD 希望有高手大大能解惑~
PS. 個人一點粗淺的想法是Java有點像加裝了防呆裝置的C++,
如果是很懂架構設計的發展人員, 多重繼承應該不會造成什麼大問題,
但若設計得不好可能會讓類別之間的繼承/相依關係變得很雜亂,
而Java強制規定用interface實作的方式來實現多重繼承,
可以降低雜亂的相依關係造成的傷害, 因為原本要相依類別的實作程式碼,
現在改用interface後則只相依了方法的宣告, 降低了整體的耦合度~
※ 引述《qrtt1 (有些事,有時候。。。)》之銘言:
: 看這題討論這麼熱烈,
: 順便提醒一下有些舊文可以參考。
: 請搜尋文章標題「以父類別宣告然後以子類別的建構子」
: 由於它的標題不是那麼好記常被忘了,
: 我都在 google 查「site:ptt.cc java 卡卡西」才會找到它 Orz
: 主題也跟 interface, abstract 有關,其實核心是多型

Links booklink

Contact Us: admin [ a t ] ucptt.com