Delphi中Interface接口的使用方法

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.