关于ObjectPascal中的类和接口的区别(50分)

  • 主题发起人 主题发起人 sqlnew
  • 开始时间 开始时间
S

sqlnew

Unregistered / Unconfirmed
GUEST, unregistred user!
请说说ObjectPascal中的类和接口的区别,
特别是接口的用法,我不是很理解,能解析一下吗。
 
delphi不支持多继承,它用接口的方式实现了多继承,其实也不是多继承,但可以认为是多继承。呵呵
 
来自:savetime, 时间:2004-1-28 17:13:00, ID:2424637 | 编辑
to Passion,
你这样点拨一下,使我突然明白了 interface 的用处。
回忆这几天学习的属性编辑器和元件编辑器的实现,它们都是在基类定义构造函数,然后通过接口实现具体的功能。IDE 通过接口查询这些编辑器是否实现了某个接口。这样,如果 Borland 需要增加新的功能,只需要重新设计一个接口,而不用修改原来的类实现,保证 Delphi 升级后用户设计的代码可以正常运行。
使用 interface 不但可以隐藏实现的细节,还主要是为了使功能模块化,解决了面向对象编程中浪费 VMT 空间的问题。

来自:Passion, 时间:2004-1-29 8:43:00, ID:2424935
我的理解是interface可以用在不同的类结构体系间以封装类之间的关系(这些类我们很可能没法都接触到,所以没法以类的方式直接互相发生关系)。

来自:savetime, 时间:2004-2-4 16:06:00, ID:2435930 | 编辑
>>我的理解是interface可以用在不同的类结构体系间以封装类之间的关系(这些类我们很
>>可能没法都接触到,所以没法以类的方式直接互相发生关系)。
同意 Passion 说的,我原来对 interface 的看法错了。
 
接口只是方法的定议,具体实现是在类里面实现的
一个类可以继承多个接口
 
从使用角度来看,
接口最主要的好处就是把接口作为参数传递。
如:

function Func(aIntf: Iintf):
而这个函数可以接受任何实现了这个接口的类。
这种用法,是纯虚类所没有的
 
李维的Inside VCL里面讲的比较清楚,看看就明白了
 
从结构和设计的角度来说,接口可以使不同的接口/对象/代码之间拥有松耦合,有助于减少对象树的深度,增强代码的健壮性。看看设计模式吧,接口的思想很精彩。
 
后退
顶部