您的位置:首页 > 编程语言 > Delphi

Delphi中的各种方法类型简介

2010-05-24 11:15 309 查看
在Delphi中有4种方法类型,分别是:static(静态), virtual(虚), dynamic(动态) 以及message(消息处理)。

先建立示例对象如下:

type
Foo = class

procedure IAmAStatic;
procedure IAmAVirtual; virtual;
procedure IAmADynanic; dynamic;
procedure IAmAMessage(var M : TMessage); message WM_SomeMessage;

end;

1.静态方法: IAmAStatic

静态方法是缺省类型,类似如常规的过程和函数。静态方法的执行速度最快。

静态方法不能被覆盖,无法实现多态性。

2.虚方法: IAmAVirtual

虚方法的调用方法和静态方法一样,而且可以被覆盖。

虚方法执行速度较快,但是消耗内存较多。

3.动态方法: IAmADynanic

动态方法是具有不同调度机制的虚方法。

动态方法与虚方法想比占用内存较少,但是速度稍慢。

4.消息处理方法: IAmAMessage

消息处理方法通常用于创建对Windows消息的响应。

以下将简单介绍方法的覆盖和重载。

1.覆盖:

type
FooChild = class(Foo)

procedure IAmAVirtual; override;
procedure IAmADynanic; override;
procedure IAmAMessage(var M : TMessage); message WM_SomeMessage;

end;

2.重载:

type
TSomeClass = class

procedure AMethod(I : Integer); overload;
procedure AMethod(S : String); overload;
procedure AMethod(D : Double); overload;

end;

最后再简单介绍一下reintroduce和self关键字的用法。

1.reintroduce:

在极少数的情况下,我们可能打算加入一个方法到自己的类中,从而完全取代祖先类中的同名方法。注意,这不是一个覆盖的行为。

这时我们可以使用reintroduce关键字,不然编译器会作出"新方法隐藏积累里某个方法"的提示。

例如:

type
TSomeBase = class
procedure Cooper;
end;

TSomeClass = class(TSomeBase)
procedure Cooper; reintroduce;
end;

2.Self:

在所有对象方法中都有一个隐藏的self变量,其指向调用该方法的类实例的指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: