码迷,mamicode.com
首页 > Windows程序 > 详细

Delphi中Interface接口的使用方法

时间:2015-08-18 15:37:57      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

示例注释(现在应该知道的):


{   1、接口命名约定 I 起头, 就像类从 T 打头一样.   2、接口都是从 IInterface 继承而来; 若是从根接口继承, 可省略.   3、接口成员只能是方法、属性, 没有字段.   4、接口成员都是公开的, 不需要 private、protected、public、published 等任何访问限制.   5、因为接口只声明、无实现, 也用不到继承与覆盖相关的修饰(virtual、dynamic、abstract、override).   6、一个接口可以从另一个接口继承, 但不能从多个接口继承; 不过 Delphi.Net 已支持接口的多继承了.   7、一个类可以实现多个接口: TMyClass = class(父类, 接口1, 接口2, ...)  end;   8、不过实现接口的类有多么丰富, 接口只拥有自己声明的成员.   9、实现接口的类一般继承于 TInterfacedObject, 直接从 TObject 继承会增加一些麻烦而重复的工作.   10、接口在用完后会自释放, 并同时释放拥有它的类; 这很方便, 但同时带来很多问题.
}
 

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

//定义接口如果接口独立成一个文件,则在应用程序中和实现程序中都要引用该接口文件;

    ICar = interface (IInterface)

        [‘{ED52E264-6683-11D7-B847-001060806215}‘]

procedure drive;

end;

//接口实现类1,一定要加入TinterfacedObject才能使用;

    TCar = class(TInterfacedObject,ICar)

public

        procedure drive;

end;

//接口实现类2,一定要加入TinterfacedObject才能使用;

    THouseCar = class(TInterfacedObject,ICar)

public

procedure drive;

end;

TForm1 = class(TForm)

    Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

function getCar:ICar; //此处可用别的方式来实现获取ICAR,如放在DLL文件中作为导出函数;

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

{ TCar }

procedure TCar.drive;

begin

ShowMessage(‘TCar.drive‘);

end;

{ THouseCar }

procedure THouseCar.drive;

begin

   ShowMessage(‘THouseCar.drive‘);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

s:ICar;

begin

s:= getCar;

s.drive;

end;

function TForm1.getCar:ICar;

begin

   Result:=THouseCar.Create; //此处为整个实现的关键点;

//Result:=TCar.Create;

end;

end.

Delphi中Interface接口的使用方法

标签:

原文地址:http://www.cnblogs.com/h2zZhou/p/4739222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!