作者sbrhsieh (十年一梦)
看板java
标题Re: [问题] 面试时被问到介面功能
时间Thu Oct 17 15:35:49 2013
※ 引述《swpoker (swpoker)》之铭言:
: 标题: Re: [问题] 面试时被问到介面功能
: 时间: Thu Oct 17 09:40:16 2013
:
: 介面存在的目的就是跟推文大大说的一样
: 因为C的多重继承直接导致不可思议的问题
: 也因为本身语言的机制导致无法从语言本身解决
: 例如
: A{methodA,methodC}
: B{methodB,methodC}
: XXX 继承A,B
: 那麽methodC是???
: 所以java解决这个问题,就是限制继承的范围
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 163.29.28.131
: ※ 编辑: swpoker 来自: 163.29.28.131 (10/17 09:42)
: → sbrhsieh:开头提到的问题在多介面也会碰到 10/17 14:12
: → swpoker:但介面没有实作~所以没差~但类别继承会有实作的问题 10/17 14:28
这种说法已看过多次,但老实说我觉得蛮没有说服力的。
采用 interface 来实作多重型别时,就可以省去 ambiguity 的麻烦,是
一厢情愿的想法。
当一个 class implements 了两个拥有相同 name/signature method 的 interface
时,只能提供一个 implementation,但是两个 interface 内的同 name/signature
method 的意义不一定相同,所以你不总是能够提供适当的 method implementation。
若"所以java解决这个问题"中的问题是指编译时会产生有时让人摸不着头绪的
ambiguity 讯息,那我觉得 Java 的作法真的不算是一种进步。
多重实作继承确实是麻烦的一件事,但是用同 name/signature 的 method 为例子
是不足以证明 interface 继承是更好的作法。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.110.51
1F:→ swpoker:没错!所以我不会只采用继承作为解决的方案之一!!! 10/17 15:38
2F:→ swpoker:反而我会认为使用"继承"是必须要很小心的~不能依赖语言 10/17 15:39
3F:→ swpoker:我曾经反对"获得某个元件的功能就是用继承"的作法 10/17 16:03
4F:推 Killercat:赞成。如果真的搞到需要多虫剂成,我会请设计者改包含 10/17 19:10