• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi-新语法之Helper

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

技术交流,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;


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap