delphi的接口的意义是不是跟C++和Java的不同呢
2006-02-04 13:57:46 来源:WEB开发网核心提示: fellow99说: delphi的接口的意义是不是跟C++和java的不同呢?delphi的接口的意义是不是跟C++和Java的不同,怎么我这样不行的呢: IInterface1 = interfaceend;IInterface2 = interface(IInterface1)PRocedure method(
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 的驱动程序,由于数据库类别的不同,将有不同的实现。
- ››Delphi实现把10进制转换成16进制的函数进制转化
- ››Delphi中将字符串按给定字符分隔(似split函数功能...
- ››Delphi 动态创建窗体,锁定窗口赋值
- ››Delphi 与 VC 共享接口和对象
- ››Delphi图像处理 -- 表面模糊
- ››Delphi之多线程实例
- ››Delphi SelectSingleNode的使用 根据节点属性获取...
- ››Delphi接口详述
- ››delphi 远程调试
- ››Delphi与DirectX之DelphiX(34): TDIB.Lightness()...
- ››Delphi Application.MessageBox详解
- ››Delphi只能运行一个程序实例的两种方法
更多精彩
赞助商链接