作者swpoker (swpoker)
看板java
标题Re: [问题] 面试时被问到介面功能
时间Thu Oct 17 09:40:16 2013
※ 引述《PsMonkey (痞子军团团长)》之铭言:
: ※ 引述《aoksc (重出江湖)》之铭言:
: : 今天面试时被面试官问Java为什麽要有介面
: : 有继承的机制不就够了吗?
: : 我的回答是因为为了要解决Java不能多重继承的问题
: : 避免为了继承而继承破坏继承的结构
: : 也让不同的类别可以分离出共同的介面
: : 面试官接着问:还有呢?
: : 这…我的功力不够就答不出来了
: : 所以想请教一下各位
: : 除了上面的答案之外还有什麽更完善的答案呢?
: : 谢谢
介面存在的目的就是跟推文大大说的一样
因为C的多重继承直接导致不可思议的问题
也因为本身语言的机制导致无法从语言本身解决
例如
A{methodA,methodC}
B{methodB,methodC}
XXX 继承A,B
那麽methodC是???
所以java解决这个问题,就是限制继承的范围
这也让我想到在tiles有说明到其解决的方式不采用继承,而是用组合说明了继承的问题
不过我还是比较倾向介面是类似contract的概念
要来办个投票吗?
采用介面的理由是..
1.避免多重继承
2.严格的规范(contract)
3.多只.java就可以多报点价
: 《寿司料理王》第 165 话〈寿司问答〉中有这麽一个故事:
: 德田把所有已知的禅门公案都背下来
: 所以师父给的「问答」都能回答的游刃有余
: 於是这个师父就去找他师父:笑点和尚(谜之声:what the f__k name)
: 笑点和尚:哈哈哈哈哈...
: 那个小和尚或许是把据说一千七百则之多的公案给背起来了也说不定。
: 师父:这可不好笑阿,笑点和尚。
: 真是的!说道最近的修行僧阿...
: 光是把知识和答案塞到脑袋里头去。
: 这麽一来... 拼命设计难题,
: 应该是以消除杂念达到领悟目的公案就没用了。
: 笑点和尚:我们当小和尚的时代就连电脑都没有呢。
: 现在只要一个按钮就可以得到更种情报。
: 於是笑点师父就出了一个公案给德田:
: 越是卓越的寿司师父,越容易在工作上犯的错误是什麽?
: 德田在音寿司那里顿悟之後,回去这样回答笑点师父
: 卓越的寿司师父犯的错虽然是错,
: 不过是出自无心的真理!
: 我的禅问答不存在於体内,
: 是知识!不是真理!
: 禅要成为体验!
: ======== 你真的没有走错版之分隔线 ========
: 这本来可以是个好问题的
: 或着说,版面上大多数的文章(问题),都可以是个好问题的
: 但是问的动机很诡异,结果问的方式也就跟着诡异了起来
: 於是造就了令人悲伤的局面
: 为什麽要有/用 interface?
: 为什麽要有/用 abstract class?
: 还有一卡车的「为什麽」问题
: 应该充斥在你写的每一行 code
: 应该充斥在阅读别人写的每一个 class 当中
: 让你提心吊胆、让你踌躇无法决定
: 也许不怕别人笑,但是总会怕哪一天这些没想清楚的「为什麽」爆发
: 把你被生吞活剥,连个骨头都不剩
: (我人品不好,通常都是现世报)
: 讲的自大一点
: 我始终不想搞懂 Design Pattern 的藉口
: 就是我知道了这些 pattern,当然,要唬烂人的时候很好用
: 但是实做上我还是不知道该怎麽作,反而凭空产生许多「杂讯」
: 还不如想办法摆平程式
: 然後别人回头跟我说「你写的这个就是 xx pattern」
: 来的实在且踏实
: 你这样子的问法,有什麽意义吗?
: (让版主审视版规 4 够不够好...的意义)
: 你因此得到了答案,有什麽意义吗?
: Java 语言也许不是真理
: 但是写 Java、了解 Java 要成为体验
: 阿们
这就是理论跟实务的论点
我也曾经推荐Design pattern给我同事看
我同事就说他以前就看过~可是看完後~还是不知道要怎麽实作
其实原因无他
因为design pattern不是用来实作的
因为这些都是是经验之谈 ->没有一个或是绝对标准的答案
就好像我女友看港剧的时候,都会问一句话:这个是好人还是坏人?
也就是在解决问题的时候,请问会有标准的答案吗?
其实是没有的~我会根据人事时地物决定不同的方式
所以这就造成困惑了
如果看重构这本书就更糟糕了(会有正反说的论点)
此外我比较推荐敏捷开发这本书
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.28.131
※ 编辑: swpoker 来自: 163.29.28.131 (10/17 09:42)
1F:→ sbrhsieh:开头提到的问题在多介面也会碰到 10/17 14:12
2F:→ swpoker:但介面没有实作~所以没差~但类别继承会有实作的问题 10/17 14:28