作者Rokund (....)
看板java
标题Re: [问题] 请问interface到底是做什麽用的?
时间Fri Apr 14 15:46:00 2006
※ 引述《kazenol (随便啦)》之铭言:
: 我大致能了解作者的意思,也明白您的意思。如果不让演算法只是针对这个物件而用
: ,让别的物件也能使用,用继承我能理解,可是介面里只是一个演算法的名称,而实际
: 的演算法还是要写在实作的物件里。那麽不管父母类别里的演算法函式怎麽写的,去继承
: 介面的子物件应该是看不到父母类别里的方法,充其量是儿子知道父母有钱,但是怎麽
: 赚来的不知道,自己得要去想赚钱的方法。就算父母类别想将赚钱的演算法传给其他人,
: 因为介面不准写方法,也只能定义要赚钱()、会赚钱()这样的口头话。
: 所以我一直不懂的是,介面的多向继承,到底是继承了什麽?为何要去继承?
: 介面写的都是一些空的名词啊,既没继承到实质的方法与变数,同时子物件自己也必须
: 要写自己的方法。
: 我唯一能想到的解释是。一个人coding可以知道哪边要做什麽事,跟一堆人coding可能
: 就有个主设计师把规则先写出来,後面的人都得照这规则去继续写,就像是把大纲写在
: 程式里这样吧。
我想大家回答的问题集中在多种继承与介面的关系,我觉得原波其实
没有要问到那层面的事,我看起来他的问题简单来说是怀疑「既然儿子自己也会赚钱
,为什麽一定要继承父母会赚钱的介面」
我用另一个例子来说明
他的问题有点像「假设有个人对法律很了解,但为什麽一定要有律师执照
别人才能找他当律师」
对法律很懂是某个人的function。律师执照就像是一种interface,
这个interface定义拥有执照的人一定要很懂法律。因此虽然某个人很懂法律
(他有implement跟interface一样的方法),但它没有律师执照(没有继承介面),
但他就是没有办法当律师。也就是说律师执照是一种介面,我们要请某人当律
师时只要知道他有没有律师执照(有没有该interface),就知道我们可不可以
请他当律师。虽然律师执照只是一张纸(像原波说的「介面写的都是一些空的名词
啊,既没继承到实质的方法与变数,同时子物件自己也必须要写自已的方法」),
但我们就是要继承该介面。
这就是为什麽要继承介面
这就是为什麽要有律师执照!?
我们不能在class中写actionPerformed()就说他是actionListener
我们不能说自已很懂法律就说自己是律师
而以语言上来说,因为是静态型别语言(前面某大大说过),所以一定
要继承介面才能跟定义好的型别做某些互动。
说得很乱,不知道有没有回答到问题= =
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.136.147.164
※ 编辑: Rokund 来自: 140.136.147.164 (04/14 15:58)