代碼文件:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
{此接口聲明了一個 Name 屬性; 因為接口沒有字段, read/write 都只能 從方法}
IMyInterface = interface
function GetName : string;
procedure SetName(val : string);
property Name : string read GetName write SetName;
end;
{類實現的是接口的讀寫方法, 屬性還是屬於接口的; 類可以提供一個儲存屬 性的字段}
TMyClass = class(TInterfacedObject, IMyInterface)
private
FName: string;
public
function GetName: string;
procedure SetName(val: string);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyClass }
function TMyClass.GetName: string;
begin
Result := FName;
end;
procedure TMyClass.SetName(val: string);
begin
FName := val;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
c: TMyClass;
i: IMyInterface;
begin
c := TMyClass.Create;
i := c;
i.Name := 'ABC';
ShowMessage(i.Name); {ABC}
//沒有一個 c.Name 存在, 這個屬性只屬於接口
end;
end.