|
 |
栏目导栏 |
|
| |
|
|
|
|
 |
资料搜索 |
|
| |
|
|
|
|
 |
热门文章 |
|
| |
|
|
|
|
 |
最新文章 |
|
| |
|
|
|
| |
| |
|
|
|
| |
| delphi2006语言新特性:帮助类(Class Helpers) |
|
帮助类(Class Helpers)dTiLinux联盟 dTiLinux联盟 dTiLinux联盟 帮助类是联合其它类的一种类型,它能为联合类(包括它的派生类)增加方法和过程。它为我们提供了一种不使用inheritance来扩展一个类的能力,你可以在任何地方使用帮助类,编译器自动决定在什么时候使用原始类还是增加的帮助类。(注意:帮助类只是一种扩展一个类的方法,但是应该仅仅在为实现某种新目的而开发新代码时被使用,而不应该视为一个设计工具被使用。它是绑定语言和平台RTL的 )dTiLinux联盟 dTiLinux联盟 定义一个帮助类的语法:dTiLinux联盟 dTiLinux联盟 dTiLinux联盟
typedTiLinux联盟 identifierName = class helper [(ancestor list)] for classTypeIdentifierNamedTiLinux联盟 memberListdTiLinux联盟 end; |
dTiLinux联盟 dTiLinux联盟 ancestor list是可选的dTiLinux联盟 一个帮助类不可以定义实例数据,但允许有类字段(class fields)dTiLinux联盟 可见性规则与memberList语法与一般的类一样dTiLinux联盟 一个简单类可定义并联合多个帮助类,然而,只有一个在源代码中特殊位置的帮助类才能被应用。在最近的范围被定义了的帮助类将应用。帮助类的范围是由delphi风格决定的(在单元中uses子句,由右到左)dTiLinux联盟 (呵呵,上面这段翻译的好像不太准,暂且这样吧,欢迎指正)dTiLinux联盟 dTiLinux联盟 下面演示定义一个帮助类:dTiLinux联盟
dTiLinux联盟 typedTiLinux联盟 TMyClass = classdTiLinux联盟 procedure MyProc;dTiLinux联盟 function MyFunc: Integer;dTiLinux联盟 end;dTiLinux联盟 dTiLinux联盟 ...dTiLinux联盟 dTiLinux联盟 procedure TMyClass.MyProc;dTiLinux联盟 var X: Integer;dTiLinux联盟 begindTiLinux联盟 X := MyFunc;dTiLinux联盟 end;dTiLinux联盟 dTiLinux联盟 function TMyClass.MyFunc: Integer;dTiLinux联盟 begindTiLinux联盟 ...dTiLinux联盟 end;dTiLinux联盟 dTiLinux联盟 ...dTiLinux联盟 dTiLinux联盟 type dTiLinux联盟 TMyClassHelper = class helper for TMyClassdTiLinux联盟 procedure HelloWorld;dTiLinux联盟 function MyFunc: Integer;dTiLinux联盟 end;dTiLinux联盟 dTiLinux联盟 ...dTiLinux联盟 dTiLinux联盟 procedure TMyClassHelper.HelloWorld;dTiLinux联盟 begindTiLinux联盟 writeln(Self.ClassName); // Self是TMyClass 类, 不是TMyClassHelperdTiLinux联盟 end;dTiLinux联盟 dTiLinux联盟 function TMyClassHelper.MyFunc: Integer;dTiLinux联盟 begindTiLinux联盟 ... dTiLinux联盟 end;dTiLinux联盟 dTiLinux联盟 ...dTiLinux联盟 dTiLinux联盟 var dTiLinux联盟 X: TMyClass;dTiLinux联盟 begindTiLinux联盟 X := TMyClass.Create;dTiLinux联盟 X.MyProc; // 调用TMyClass.MyProcdTiLinux联盟 X.HelloWorld; // 调用TMyClassHelper.HelloWorlddTiLinux联盟 X.MyFunc; //调用TMyClassHelper.MyFunc |
dTiLinux联盟 注意,帮助类的MyFunc函数被调用,因为它的优先于实际的类dTiLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|
|
|
|
|