作用
對現有的類進行擴展,如果把類理解爲一個容器,那麼這條語法的作用是對現有的類的容器的成員進行擴展或者修改。
有點像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.