关于接口
唐力伟 2004-09-30 03:37:50 谁能帮解释下,下边的代码,button按第二次非法操作的原因
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Iaaa = interface(IInterface)
['{6AE1B64C-7680-4AD0-B12C-037B6FC2AC63}']
procedure Member1; stdcall;
end;
Tva = class(TInterfacedObject, Iaaa)
procedure Member1; stdcall;
end;
Tbbb = class(Tva, Iaaa)
public
procedure Member1; stdcall;
end;
Tccc = class(Tva)
procedure Member1; stdcall;
end;
Tddd = class(Tva)
procedure Member1; stdcall;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure callinterface(info:Iaaa);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
va:TVa;
bbb:Tbbb;
ccc:Tccc;
ddd:Tddd;
implementation
{
************************************* Tva **************************************
}
procedure Tva.Member1;
begin
showmessage('va');
end;
{
************************************* Tbbb *************************************
}
procedure Tbbb.Member1;
begin
showmessage('bbb');
end;
{
************************************* Tccc *************************************
}
procedure Tccc.Member1;
begin
showmessage('ccc');
end;
{
************************************* Tddd *************************************
}
procedure Tddd.Member1;
begin
showmessage('ddd');
end;
{$R *.dfm}
procedure TForm1.callinterface(info: Iaaa);
begin
info.Member1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
va:=Tccc.Create;
bbb:=Tbbb.Create;
ccc:=Tccc.Create;
ddd:=Tddd.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
self.callinterface(va as Iaaa);
self.callinterface(bbb as Iaaa);
self.callinterface(ccc as Iaaa);
self.callinterface(ddd as Iaaa);
end;
end.
写着个代码是为了学习接口的多态.