在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
对于Object Pascal语言来说,最近一段时间最有意义的改进就是从Delphi3开始支持接口(interface),接口定义了能够与一个对象进行交互操作的一组过程和函数。对一个接口进行定义包含两个方面的内容,一方面是实现这个接口,另一方面是定义接口的客户。一个类能实现多个接口,即提供多个让客户用来控制对象的“表现方式”。
正如名字所表现的,一个接口就是对象和客户通信的接口。这个概念像C++中的PUREVIRTUAL类。实现接口的函数和过程是支持这个接口的类的工作。
在这里你将学到接口的语言元素,要想在应用程序中使用接口,请参考COM和ActiveX方面的资料;
1.定义接口
就像所有的Delphi类都派生于TObject一样,所有的接口都派生于一个被称为是IUnknown的接口,IUnknown在system单元中定义如下: IDispatch = interface(IUnknown) 正如你所看到的,接口的定义就像是类的定义,最根本的不同是在接口中有一个全局唯一标识符(GUID),它对于每一个接口来说是不同的。对IUnknown的定义来自于Microsoft的组件对象模型(COM)规范。
type 提示在Delphi的IDE中,按Ctrl+Shift+G键可以为一个接口生成一个新的GUID。 下面的代码声明了一个称为IBar的接口,它是从IFoo接口继承来的: type 2.实现接口 下面的代码演示了在一个类TFooBar中怎样实现IFoo和IBar接口:
function TFooBar.F1 : Interger; function TFooBar.F2 : Interger;
如果一个类要实现多个接口,而这些接口中包含同名的方法,必须把同名的方法另取一个别名,请看下面的程序示例:
type TFooBar = class(TInterfacedObject, IFoo, IBar) function TFooBar.FooF1 : Interger; function TFooBar.BarF1 : Interger; 3.implements指示符 implements指示符是在Delphi4中引进的,它的作用是委托另一个类或接口来实现接口的某个方法,这个技术有时又被称为委托实现,关于implements指示符的用法,请看下面的代码: type
implements指示符在开发中提供了两个好处:首先,它允许以无冲突的方式进行接口聚合。聚合 (Aggregation)是COM中的概念。它的作用是把多个类合在一起共同完成一个任务。其次,它能够延后占用实现接口所需的资源,直到确实需要资源。例如,假设实现一个接口需要分配一个1MB的位图,但这个接口很少用到。因此,可能平时你不想实现这个接口,因为它太耗费资源了,用implements指示符后,可以只在属性被访问时才创建一个类来实现接口。 4.使用接口 当在应用程序中使用接口类型的变量时,要用到一些重要的语法规则。最需要记住的是,一个接口是生存期自管理类型的,这意味着,它通常被初始化为nil,它是引用计数的,当获得一个接口时自动增加一个引用计数;当它离开作用域或赋值为nil时它被自动释放。下面的代码演示了一个接口变量的生存期自管理机制。
//I被初始化为nil I.SomeFunc; //I的引用计数减1,如果为0,则自动释放。 end;
F :=FB; //合法,因为FB支持IFoo 最后,类型强制转换运算符as可以把一个接口类型的变量强制类型转换为另一种接口。示例如下:
F :=FB; //合法,因为FB支持IFoo
另,参见:http://www.cnpack.org/showdetail.php?id=571&lang=zh-cn |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论