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.
————————————————
对现有的类进行扩展,如果把类理解为一个容器,那么这条语法的作用是对现有的类的容器的成员进行扩展或者修改。
有点像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.
————————————————
分类:
delphi新功能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?