作者sbrhsieh (十年一梦)
看板java
标题Re: [问题] 面试时被问到介面功能
时间Thu Oct 17 16:25:38 2013
※ 引述《popcorny (毕业了..@@")》之铭言:
: ※ 引述《sbrhsieh (十年一梦)》之铭言:
: : 这种说法已看过多次,但老实说我觉得蛮没有说服力的。
: : 采用 interface 来实作多重型别时,就可以省去 ambiguity 的麻烦,是
: : 一厢情愿的想法。
: : 当一个 class implements 了两个拥有相同 name/signature method 的 interface
: : 时,只能提供一个 implementation,但是两个 interface 内的同 name/signature
: : method 的意义不一定相同,所以你不总是能够提供适当的 method implementation。
: : 若"所以java解决这个问题"中的问题是指编译时会产生有时让人摸不着头绪的
: : ambiguity 讯息,那我觉得 Java 的作法真的不算是一种进步。
: : 多重实作继承确实是麻烦的一件事,但是用同 name/signature 的 method 为例子
: : 是不足以证明 interface 继承是更好的作法。
: 我觉得应该要这样看
: 多重实作继承很复杂难用.
: 所以JAVA把继承分成单一实作继承(class)跟多重介面继承(interface)
: 所以interface算是解决多重"实作"继承复杂的问题
: 但是没有解决多重(介面)继承signature collision的问题..
这个我了解,针对其他版友的文是我觉得所提的点不能拿来说明「Java 选择
interface 实现多重介面并舍弃多重实作继承」是比较好的作法。
pure abstract class 本身与 Java interface 是等效的,没有引入 interface
(有别於 class)不代表就没有介面继承的观念。
Java 的选择是一种交易,付出的代价是你在多重介面继承时,必定得自己写一堆
boilerplate code(composition, delegation),不然就要透过 code-generation
tool 或 bytecode engineering 的帮助。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.238.39.58