如果是要了解如何利用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 有关,其实核心是多型