在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
技术交流,DH讲解. 哈哈,好久没有写这个系列了.今天在看VCL源代码的时候,看见了这个. 当我们想给一个类增加一个方法或者成员变量,但是这个类又被很多单元引用了,我们直接去该这个类,肯定是很不明智的,怎么办? 对了,面向对象的话,我们可以继承一下不就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; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论