当前位置:主页>Delphi教程>文章内容
delphi的接口的意义是不是跟C++和Java的不同呢
来源: 作者: 发布时间:2007-04-29  
 

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编程实现Ping操作   下一篇:Delphi编写数据库程序要点(一)
 
  相关文章
·Delphi编程实现Ping操作
·Delphi编写数据库程序要点(一)
·Delphi实现Singleton模式
·在串中查找第i个子串的位置及效率评测
·用Delphi2005和DUnit搭建敏捷开发平台
·学习MySQL多表操作和备份处理
·三层数据库与应用程序服务器的小型介绍
·Delphi中正常窗口的实现
·在WIN2000/XP下添加自定义纸张的Delphi
·[PB+Delphi]主应用程序用的是PB,操作
·borland工程师如何保证父类(TStream)的
·如何从MySQL数据库表中检索数据
 
【关闭窗口】
推荐本站资源
最新文章