回复:delphi的接口的意义是不是跟C++和Java的不同呢?

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

fellow99说: delphi的接口的意义是不是跟C++和Java的不同呢?

delphi的接口的意义是不是跟C++和Java的不同,怎么我这样不行的呢:

IInterface1 = interface

end;

IInterface2 = interface(IInterface1)

procedure method();

end;

TClass1 = class(TInterfacedObject, IInterface2)

......

end;

首先,编译器不承认TClass1是IInterface1的派生,一定要写成TClass1 = class(TInterfacedObject, IInterface2, IInterface1)才可以。

接着,这样子也不行:

function xxx(): IInterface2;

var

obj: TObject;

begin

obj := TClass1.Create;

result := obj as IInterface2; //不行

result := IInterface2(obj); //也不行

end;

想想没有道理, kbs说在D7中是可以的,我决定在D5中试一试。

试验的结果是,在D5中第一个问题是不存在的,第二个问题的,改 obj 的声明为:

var

obj: TClass1;

就可以了。因为TObject 是不能 as 为 IInterface2 的,因为它的定义中并没有从 IInterface2 继承。

据我看来,接口的意义不仅体现在语法上,更多的是应用方式:声明功能而不是实现,可以有各种不同的实现。应用的场合是有预想到的多个实现。如 ADO、dbExpress、JDBC 的驱动程序,由于数据库类别的不同,将有不同的实现。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航