看板java
标 题Re: [问题] 请问interface到底是做什麽用的?
发信站神秘之旅 (Fri Apr 14 11:47:21 2006)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.cycu!news.ice.cycu!BBS
> 发信人: [email protected] (随便啦) 看板: Java
> 标 题: Re: [问题] 请问interface到底是做什麽用的?
> 发信站: 批踢踢实业 (2006/04/14 Fri 02:49:27)
>
> ※ 引述《godfat (godfat 真常)》之铭言:
> : ※ 引述《kazenol (随便啦)》之铭言:
> 嗯...这边我的问题是,物件的compareTo方法,可不可以直接定义在物件的class里?
> 因为物件去继承介面,也是要在自己里面去定义方法,那为什麽不自己来呢?
> 从多重继承的字面来看,应该是会使用到父母类别的方法或变数,可是介面里写的
> 东西,除了跟父母类别的方法同名以外,我不知道继承介面可以得到父母类别的什麽
> 东西?而且其他不是父母类别的类别,万一有了同样名称的方法,那不就变成同时也
> 去继承这个第三者了?
您的意思是不是说, 既然到最後 Class 本身都要提供方法的实作
那干麻还要继承介面? 直接把它编到 Class 里面就好了?
如果是的话, 原因很简单: 因为您用的是静态型别语言 (static typing language)
您有一个模组, 根据某个概念来写, 参数要宣告型态, 於是他会绑死於那个形态
使用继承的好处, 可以让你的程式跟某个型别解耦 (decuple) 使用子类别的实作
如果今天用的是动态语言, 使用它们的 Duck Typing 特性
或使用 C++ Template 的 Type Inference 自动推导型别的特性
就不会绑死於某个型别, 当然也就不用去继承某个介面, 然後用 late binding 来取用
这时候继承可能变的比较单纯一点, 就是纯粹继承实作吧! (不确定)
不过要不要多重继承应该跟这个比较没关连, 因为同为 Dynamic Typing Language
Python 就有多重继承语法在定义类别的时候; 而 Ruby 使用的是 Mixin Module 来做到
> 其他几位大大的写法,我能理解其中的:先定义一个规范,其他要继承这个类别的
> 就要去把规范的内容写出来。就好像是体委会丢一个建立二军的公文要求中职六队
> 去建立二军,但是体委会什麽目标、进程都没有,要六队自己提出建立二军的规划表
> 然後上缴体委会,所以六队提出的内容也会不一样,但是基本上都有依照体委会"建立
> 二军"的目标去做。
>
> 可是不见得每个二军规划表都有像la new一样有"球员专用餐厅"啊,如果要使用
> 二军.餐厅()这个func,不就会卡住?如果中职六队不去继承体委会这个介面,他们也
> 可以不用理会建立二军这个规范。那是什麽原因这些class必须去继承这个介面呢?
>
>
>
--
╭┬╮
│
┴│╭─﹏﹏──────────────
Web bbs http://bbs.ice.cycu.edu.tw
└┬┘│
中原资工神秘之旅 Post by a │
╰﹏╯
From:61-224-87-60.dynamic.hinet.ne ╰﹏﹏
bbs.ice.cycu.edu.tw﹏﹏
Ω