请教各位,接口是怎么实现的?接口有什么好处?能否举简单的实例说明一下呢?先谢谢了!
解决方案 »
- 盗版的delphi是不是很不稳定,请大家说说盗版的delphi 的缺点
- DBGrid是否有可编辑功能
- 共享软件驱动级加密,谁有好的方案?
- 用delphi 如何实现程序间即时通信,其原理是怎样的
- 程序不顺,散分!快来接分!顺便发几个问题,反正也解决不了,大家可以来看看^-^
- 关于数据库选择和备份的问题?
- 有人写过用线程处理窗口消息的程序吗?
- 一 个数据库的菜鸟问题。
- Image2.Canvas.CopyRect(Image2.Canvas.ClipRect,Image1.Canvas,SrcRect);出错!!!
- 怎样返回sql函数的结果??
- 把图片通过程序插入到Excel
- 分组报表的制作——————在线等待!!!!
具体的你需要看看李维的inside vcl这本书,里面有对接口的详细描述。
接口分广义和狭义之分,很多国内翻译的书对此误人非浅。在DELPHI中,广义接口除了你要问的接口还包括抽象类、在单元文档前声明的INTERFACE等,狭义接口指的是在编程中用INTERFACE定义的。
简单地说狭义接口(以后称接口)就是定义了方法和属性的空架子(术语为方法签名,包括函数和过程),属性本身也是存过程和取函数,即也是方法,在接口定义中所有成员都是默认的PUBLIC,没有数据成员。这些方法由继承它的子类来实现,这个子类只能有一个而且必须有一个父类,却可以有多个父接口。
接口可以连接完全不同的类对某一共同操作的桥梁,比如,“跑”这个操作,如果要用类继承,可以在子类中去重载,但是“日本猪”、“小泉家族”、“耗子”、“机器”、“车船”这些类都有“跑”的功能,单纯类继承是无法实现的,但用接口可以,首先定义一个接口“TRUN”,然后再继承这个接口形成上述的类,在类中实现这个接口。
算了,边给代码解释:type
TRUN=interface
procedure 跑;
end; 日本猪=class(TInterfacedObject,TRUN)
//TInterfacedObject是实现了接口三个方法的Object类,其中一个是QueryInterface
procedure 跑;
............
//..........
end;
小泉家族=class(TInterfacedObject,TRUN)
procedure 跑;
............
//..........
end;implementation
......//应用:
procedure test;
var
牲:日本猪;
倭:小泉家族;
动:TRUN;
begin
牲:=日本猪.create;
倭:=小泉家族.create;
倭.QueryInterface(TRUN,动);
动.跑;//小泉家族类的跑
牲.QueryInterface(TRUN,动);
动.跑;//日本猪类的跑
end;