Delphi 的接口(4) - 接口的屬性

代碼文件:

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.
發佈了9 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章