Delphi中的各种方法类型简介

本文详细介绍了Delphi中的四种方法类型:静态、虚、动态及消息处理方法,并通过示例对比了它们的特点与应用场景。此外,还介绍了方法的覆盖与重载以及reintroduce和self关键字的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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变量,其指向调用该方法的类实例的指针。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值