delphi Class helper for class語法

作用
對現有的類進行擴展,如果把類理解爲一個容器,那麼這條語法的作用是對現有的類的容器的成員進行擴展或者修改
有點像lua中的類,可以取到類的table,對table修改。

語法

TMyClass = class
public
	procedure print;
end

TMyClassHelper = class helper for TMyClass
private
	procedure show;		//理解爲:對TMyClass進行擴展
public
	procedure print;	//理解爲:覆蓋掉了TMyClass的print方法
end

上一個簡單的例子

unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TClassA = class
  private
    tvClassId : Integer;
    function GetClassId: Integer;
  public
    procedure print();
    property ClsId: Integer read GetClassId write tvClassId;
  end;

  TClassAHelper = class helper for TClassA
  private
    function GetClassName: string;
  public
    procedure print();
    property ClsName: string read GetClassName;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TClassA }

function TClassA.GetClassId: Integer;
begin
  Result := tvClassId;
end;

procedure TClassA.print;
begin
  ShowMessage('TClassA.print');
end;

{ TClassAHelper }

function TClassAHelper.GetClassName: string;
begin
  Result := 'ClassAHelper';
end;

procedure TForm2.btn1Click(Sender: TObject);
var
  obj: TClassA;
begin
  obj := TClassA.Create;
  obj.ClsId := 1;
  ShowMessage(IntToStr(obj.GetClassId));
  ShowMessage(obj.GetClassName);
  obj.print();  
end;

procedure TClassAHelper.print;
begin
  ShowMessage('TClassAHelper.print');
end;

end.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章