Delphi - 新语法之Helper
技术交流,DH讲解.
哈哈,好久没有写这个系列了.今天在看VCL源代码的时候,看见了这个.
还是声明一下这个是在D7以后的版本才有的.谢谢,不要喷我!
当我们想给一个类增加一个方法或者成员变量,但是这个类又被很多单元引用了,我们直接去该这个类,肯定是很不明智的,怎么办?
对了,面向对象的话,我们可以继承一下不就OK了,的确可以.但是如果结构体呢?其实这个关键更像是为结构体准备的
不过我这里想说一个helper关键字的用法.
类助手 可以扩展一个类但是不用继承,而且在UML中是没有的.
简单的语法:
type 助手类名 = class helper [(基类列表)] for 被扩展的类名 成员变量列表 end; 我们可以看到很简单,就是class helper.当然这里我得说一下了,record也是可以的.谁叫record的外号叫做小类. 我们对一个类可以定义多个助手类,但是扩展原类特定处代码的助手类只能有0个或者1个.
来个简单的例子吧.
Type
TMyClass= Class
Procedure MyProc;
Function MyFunc: Integer;
End;
.. .
Procedure TMyClass.MyProc;
Var
X: Integer;
Begin
X:= MyFunc;
End;
Function TMyClass.MyFunc: Integer;
Begin
.. .
End;
接下来就是它的助手类了.
Type
TMyClassHelper= Class Helper For TMyClass
Procedure HelloWorld;
Function MyFunc: Integer;
End;
.. .
Procedure TMyClassHelper.HelloWorld; //添加的新方法
Begin
Writeln(Self.ClassName);
End;
Function TMyClassHelper.MyFunc: Integer; //覆盖原方法
Begin
.. .
End;
使用:
Var
X: TMyClass;
Begin
X:= TMyClass.Create;
X.MyProc; // 调用TMyClass.MyProc
X.HelloWorld; // 调用 TMyClassHelper.HelloWorld
X.MyFunc; // 调用TMyClassHelper.MyFunc
End.
就是这么简单,希望大家能用到.
今天就讲到这里,我是DH;
分类:
Pascal语法
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)