作者kazenol (随便啦)
看板java
标题Re: [问题] 请问interface到底是做什麽用的?
时间Fri Apr 14 12:05:03 2006
※ 引述《qrtt1 (隐者)》之铭言:
: ※ 引述《kazenol (随便啦)》之铭言:
: : 嗯...这边我的问题是,物件的compareTo方法,可不可以直接定义在物件的class里?
: : 因为物件去继承介面,也是要在自己里面去定义方法,那为什麽不自己来呢?
: : 从多重继承的字面来看,应该是会使用到父母类别的方法或变数,可是介面里写的
: : 东西,除了跟父母类别的方法同名以外,我不知道继承介面可以得到父母类别的什麽
: : 东西?而且其他不是父母类别的类别,万一有了同样名称的方法,那不就变成同时也
: : 去继承这个第三者了?
: : 其他几位大大的写法,我能理解其中的:先定义一个规范,其他要继承这个类别的
: : 就要去把规范的内容写出来。就好像是体委会丢一个建立二军的公文要求中职六队
: : 去建立二军,但是体委会什麽目标、进程都没有,要六队自己提出建立二军的规划表
: : 然後上缴体委会,所以六队提出的内容也会不一样,但是基本上都有依照体委会"建立
: : 二军"的目标去做。
: : 可是不见得每个二军规划表都有像la new一样有"球员专用餐厅"啊,如果要使用
: : 二军.餐厅()这个func,不就会卡住?如果中职六队不去继承体委会这个介面,他们也
: : 可以不用理会建立二军这个规范。那是什麽原因这些class必须去继承这个介面呢?
: http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/
: StrategyPattern.htm
: Strategy Design Pattern 通常用这样的机制去实践的
: 也许您可以先看看感觉一下作者的意图
: 我们不能以程式的观点来看这个问题! 因为写法有很多种。
: 但是要如何使程式达成松散的耦合则是一整个系统中的重点之一
: 您确时可以把演算法写死在同一个class之内 :)
: 含有这只演算法的物件, 可能无法轻易更换
: 因为演算法是针对这个物件而写
: 反之,演算法也无法重复使用在别的物件之上
: 因为被绑死了,也就是传说中的交互性耦合
: 这样就失去了物件导向期待reusable的目标了
我大致能了解作者的意思,也明白您的意思。如果不让演算法只是针对这个物件而用
,让别的物件也能使用,用继承我能理解,可是介面里只是一个演算法的名称,而实际
的演算法还是要写在实作的物件里。那麽不管父母类别里的演算法函式怎麽写的,去继承
介面的子物件应该是看不到父母类别里的方法,充其量是儿子知道父母有钱,但是怎麽
赚来的不知道,自己得要去想赚钱的方法。就算父母类别想将赚钱的演算法传给其他人,
因为介面不准写方法,也只能定义要赚钱()、会赚钱()这样的口头话。
所以我一直不懂的是,介面的多向继承,到底是继承了什麽?为何要去继承?
介面写的都是一些空的名词啊,既没继承到实质的方法与变数,同时子物件自己也必须
要写自己的方法。
我唯一能想到的解释是。一个人coding可以知道哪边要做什麽事,跟一堆人coding可能
就有个主设计师把规则先写出来,後面的人都得照这规则去继续写,就像是把大纲写在
程式里这样吧。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.174.241