尤 尤琪 Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-13 #4 我的意思是没有接口,只有类能不能实现借口完成的功能,除了多继承
B bluesaga Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #6 较这个劲没什么意义。 说说你想实现什么,接口出现是有它的意义的。重要的是知道什么时候用接口,什么时候用类。
X xmh_31 Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #8 http://www.delphibbs.com/keylife/iblog_show.asp?xid=13180 刚写的,可以去看一下
X xmh_31 Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #9 最近,还是看到很多人在问对象和接口的问题。 我原本以为,这已经不是个问题了,但是现在看来,它还困扰这很多程序员。 其实这个问题很简单,举例说明吧: 你是一个对象,继承自你的父母,你的gf也是一个对象,继承自她的父母,只有你和你的gf发生关系(比如打kiss)的时候,才会出现接口。这是接口的本质,接口就是一个对象要和另外一个对象发生关系时的协议。 很多误导人的书,把接口说成是为了解决多重继承问题,其实是作者不懂,而且还在误导别人。从下面的例子可以分析一下 type TSun = class(TParent, ISomeInterface) .... end; 持以上观点的人,只是从现象上看到,诶,这不是c++的多重继承吗? 错了, 上面的写法,真实的含义,应该是这样的,TSun,继承于TParent,说明TSun有TParent大多数特性,还可能有自己的一些新特性,或者TParent没有完成的虚特性,TSun也完成了。这里主要解决代码复用问题。 但是,从语义上,却不能说TSun继承自ISomeInterface,ISomeInterface的出现说明这样一个问题:TSun,希望它的调用者按ISomeInterface的标准调用自己。 一切,都很清楚了,接口,和硬件的接口,协议,是一回事,跟面向对象没有任何关系,接口的出现,基于这样一个事实,对象间会发生关系,而接口具体明确的规定了发生关系的协议。就像一台电脑,本身是一个对象,但是至少又有电源,开关两个接口,人机交互又需要键盘和显示器两个接口。 所以,上面的例子是说,我遵守ISomeInterface接口,只要按ISomeInterface接口调用我,不会有任何问题。 从面向对象的角度看,public部分的东西,就是接口,只不过,interface的出现,更加强调了这个事实。它是大规模合作开发时的协议,是开发团队成员间必须遵守的规范。
最近,还是看到很多人在问对象和接口的问题。 我原本以为,这已经不是个问题了,但是现在看来,它还困扰这很多程序员。 其实这个问题很简单,举例说明吧: 你是一个对象,继承自你的父母,你的gf也是一个对象,继承自她的父母,只有你和你的gf发生关系(比如打kiss)的时候,才会出现接口。这是接口的本质,接口就是一个对象要和另外一个对象发生关系时的协议。 很多误导人的书,把接口说成是为了解决多重继承问题,其实是作者不懂,而且还在误导别人。从下面的例子可以分析一下 type TSun = class(TParent, ISomeInterface) .... end; 持以上观点的人,只是从现象上看到,诶,这不是c++的多重继承吗? 错了, 上面的写法,真实的含义,应该是这样的,TSun,继承于TParent,说明TSun有TParent大多数特性,还可能有自己的一些新特性,或者TParent没有完成的虚特性,TSun也完成了。这里主要解决代码复用问题。 但是,从语义上,却不能说TSun继承自ISomeInterface,ISomeInterface的出现说明这样一个问题:TSun,希望它的调用者按ISomeInterface的标准调用自己。 一切,都很清楚了,接口,和硬件的接口,协议,是一回事,跟面向对象没有任何关系,接口的出现,基于这样一个事实,对象间会发生关系,而接口具体明确的规定了发生关系的协议。就像一台电脑,本身是一个对象,但是至少又有电源,开关两个接口,人机交互又需要键盘和显示器两个接口。 所以,上面的例子是说,我遵守ISomeInterface接口,只要按ISomeInterface接口调用我,不会有任何问题。 从面向对象的角度看,public部分的东西,就是接口,只不过,interface的出现,更加强调了这个事实。它是大规模合作开发时的协议,是开发团队成员间必须遵守的规范。
D delnew Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #10 接口你可以看成是纯虚类,只有定义没有实现,它的作用主要有: 1:接口能够实现多重继承. 2:统一调用规范.
B Beyondbill Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #11 看来楼主还是没能理解接口和类各自的作用呀,优先考虑接口,这可是面向对象一大精典之处呀. 使用接口,能让你获得意想不到的好处,IE就是一个很好的证明
Y yjz302 Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #12 建议去看一下李维的<<inside vcl>>有关接口的章节
D delnew Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #13 其实接口也没有上面的兄弟说的那么好. 首先你定义接口需要很仔细,一旦接口定义好了,就不要再修改了. 否则......你需要修改所有实现该接口的类,够你受的了.(个人的一点见解)
X xmh_31 Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #14 1:接口能够实现多重继承. 我晕,有看到一个这样认为的。
J JamesBond_L Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-14 #16 xmh_31的說法我覺得很有道理,接口能够实现多重继承,我感覺是無稽之談,總是理解不到這個實際意義,我就只覺得它的作用是定義一種規範~
B Beyondbill Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-15 #17 接口对外部提供一致界面,让程序在使用时能通过不同类(实现了相应接口的类)来进行替换,达到同一种接口功能可以有不同的实现