delphi2006语言新特性:帮助类(Class Helpers)

时间:2010-02-03 12:46:43  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:加的帮助类。(注意:帮助类只是一种扩展一个类的方法,但是应该仅仅在为实现某种新目的而开发新代码时被使用,而不应该视为一个设计工具被使用。它是绑定语言和平台RTL的 )定义一个帮助类的语法:
  正文:帮助类(Class Helpers)


帮助类是联合其它类的一种类型,它能为联合类(包括它的派生类)增加方法和过程。它为我们提供了一种不使用inheritance来扩展一个类的能力,你可以在任何地方使用帮助类,编译器自动决定在什么时候使用原始类还是增加的帮助类。(注意:帮助类只是一种扩展一个类的方法,但是应该仅仅在为实现某种新目的而开发新代码时被使用,而不应该视为一个设计工具被使用。它是绑定语言和平台RTL的 )

定义一个帮助类的语法:


type
identifierName = class helper [(ancestor list)] for classTypeIdentifierName
memberList
end;


ancestor list是可选的
一个帮助类不可以定义实例数据,但允许有类字段(class fields)
可见性规则与memberList语法与一般的类一样
一个简单类可定义并联合多个帮助类,然而,只有一个在源代码中特殊位置的帮助类才能被应用。在最近的范围被定义了的帮助类将应用。帮助类的范围是由Delphi风格决定的(在单元中uses子句,由右到左)
(呵呵,上面这段翻译的好像不太准,暂且这样吧,欢迎指正)

下面演示定义一个帮助类:

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); // Self是TMyClass 类, 不是TMyClassHelper
   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

注意,帮助类的MyFunc函数被调用,因为它的优先于实际的类

"delphi2006语言新特性:帮助类(Class Helpers)"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12762.html


关键字:

关于《delphi2006语言新特性:帮助类(Class Helpers)》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td