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.
————————————————
posted @ 2022-06-11 09:27  熊大熊二  阅读(186)  评论(0编辑  收藏  举报