Delphi中的各种方法类型简介

来源:互联网 发布:ubuntu 16.04 openjdk 编辑:程序博客网 时间:2024/05/16 15:45

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

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩子上一年级语文很差了怎么办? 楼下说小孩太吵怎么办 托班的小孩太吵怎么办 宝宝两岁只会简单的词怎么办 我儿子的视力低怎么办 小孩子课文看书都不会读怎么办 宝宝衣服买小了怎么办 拉拉裤腰围小了怎么办 一周九个月宝宝发烧怎么办 8个月的婴儿37.7怎么办 宝宝发烧37度3怎么办 2岁宝宝发烧37度怎么办 3个月新生儿发烧怎么办 生完孩子肚子松弛怎么办 6个月婴儿高烧怎么办 7个月婴儿高烧怎么办 11个月婴儿高烧怎么办 4个月婴儿高烧怎么办 新生宝宝混合喂养消化不良怎么办 四个月的宝宝不追听不追视怎么办 宝宝母乳换奶粉拉肚子怎么办 奶牛产奶脂肪低怎么办 新生儿混合喂养不喝水怎么办 小孩子咳嗽怎么办有什么偏方 混合喂养宝宝不喝奶粉怎么办 混合喂养宝宝不吃奶粉怎么办 混合喂养宝宝不吃奶瓶怎么办 混合喂养的宝宝不吃奶粉怎么办 三个月的宝宝突然不吃奶粉怎么办 四个月宝宝拉绿屎推拿怎么办 三个月大的宝宝消化不良怎么办 婴儿大便常规正常的腹泻怎么办 宝宝十个月母乳不够吃怎么办 吃药上吐腹泻在3怎么办 房子买了新生儿户口怎么办 吃海鲜拉稀拉水怎么办 吃海鲜腹泻拉水怎么办 两个月宝宝不爱睡觉怎么办 2个月宝宝干呕怎么办 9个月宝宝拉稀的怎么办 宝宝拉肚子快一个月了怎么办