射手的博客
学习Delphi,需要一个记录学习的博客,

 

Interface接口.

什么是接口:

只声明方法,而不实现方法.

简单的说,接口就是包含一系列不被实现的方法.而把这些方法的实现交给继承它的类.

继承了此接口的类必须去实现接口中的每一个方法.既需要实现接口中的全部方法.

接口与类很相似.

 接口只能在程序或单元的最外层声明,而不能再过程或函数中声明.

type interfaceName = interface (ancestorInterface)

 ['{GUID}']  //接口标识

 memberList  //方法列表

end;

ancestorInterface (祖先类)

 接口和类一样,继承它祖先的所有方法.但接口不象类那样去实现这些方法.他把这些方法的实现委托给支持此接口的类.

声明一个接口时可以指定一个祖先接口,如果没有指明的话,则它直接继承自 IInterfaceIInterface System 单元定义,是其它所有接口的根类。IInterface 定义了三个方法:QueryInterface_AddRef _Release

 

对于memberlist 我们需要注意

1.memberList只包括方法和属性,字段在接口中是不允许的;

2.因为接口没有字段,所以属性的读(read)和写(write)限定符必须是方法

3.接口的所有成员都是公有的(public ,不允许使用可见性限定符和存储限定符(但一个数组属性能被声明为 default) ;

4.接口没有构造函数和析构函数,它们不能被(直接)实例化,除非使用实现了它们(的方法)的类; 

5.方法不能被声明为 virtualdynamicabstract override。因为接口自己不实现它们的方法,这些声明没有意义.

接口标志[GUID]: 一个全局唯一标识符(GUID,它用一个被中括号括起来的字符串表示,它出现在接口的成员之前。使用Ctrl+Shift+G 自动创建

 

接口调用约定(Calling conventions for interfaces):

 在接口中虽然不能使用方法绑定”,但是可以使用调用约定.

默认的调用约定是register ,如果你的程序或程序模块需要共享例程时,可以使用stdcall 调用约定.也可以根据实际情况调用其他的约定.

 

接口属性(Interface properties):

接口声明的属性只能通过接口类型的表达式进行访问,类类型的变量不行;

并且,接口的属性只在接口被编译的程序中是可见的

Forward declarationsForward(前瞻性声明)

若声明一个接口时以 interface 关键字和一个分号结束,没有指定它的祖先、GUID 以及成员列表,这是一个 forward 声明。

Forward 声明的接口必须在同一个声明区域进行定义声明,换句话说, forward 声明和它的定义声明之间除了类型声明外,不能有任何其它内容。.

相互继承(派生)的接口是不允许的.

posted on 2009-04-13 11:19 Archer 阅读(962) 评论(0)  编辑 收藏 引用 所属分类: Interface 接口的学习与运用
只有注册用户登录后才能发表评论。