代码文件:
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.