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}