zoukankan      html  css  js  c++  java
  • abstract成员函数与多态(polymorphic)

     1type
     2  TMan = class(Tobject)
     3  public
     4  PROCEDURE Dance;VIRTUAL;abstract//定义为纯虚函数,待子类来覆盖
     5    { Public declarations }
     6  end;
     7type
     8  TEuropean = class(TMan)
     9  public
    10  PROCEDURE Dance;OVERRIDE;  // TEuropean子类覆盖父类 TMan的Dance方法
    11  // abstract,OVERRIDE是成对出现的
    12    { Public declarations }
    13  end;
    14type
    15  TNorthEuropean = class(TEuropean) //继承了 TEuropean,可以不用Override纯虚函数
    16//  PROCEDURE Dance;OVERRIDE;  //还可以被孙类 TNorthEuropean所覆盖子类 TEuropean的Dance方法
    17  end;
    18type
    19  TAsian = class(TMan)
    20  public
    21  PROCEDURE Dance;OVERRIDE;   //必须Override纯虚函数  Dance
    22    { Public declarations }
    23  end;
    24type
    25  TForm1 = class(TForm)
    26    Button1: TButton;
    27    procedure Button1Click(Sender: TObject);
    28  private
    29    { Private declarations }
    30  public
    31    { Public declarations }
    32  end;
    33
    34{ PROCEDURE TNorthEuropean.Dance;  // TEuropean TManDance;
    35BEGIN
    36  ShowMessage('TNorthEuropean.Dance');
    37end; }
    38
    39PROCEDURE TAsian.Dance;  //TAsian的Dance 实现
    40BEGIN
    41  ShowMessage(self.ClassName + '对象 ' + #13 + #13 +
    42              '执行 TAsian.Dance' + #13 + #13 +
    43              '亚洲人爱跳探戈');
    44end;
    45
    46PROCEDURE TEuropean.Dance;   //TEuropean的Dance 实现
    47BEGIN
    48  ShowMessage(self.ClassName + '对象 ' + #13 + #13 +
    49              '执行 TEuropean.Dance' + #13 + #13 +
    50              '欧洲人爱跳拉丁舞');
    51end;
    52
    53procedure TForm1.Button1Click(Sender: TObject);
    54 VAR
    55  SuperMan: TMan;
    56begin
    57  SuperMan := TEuropean.Create;
    58  SuperMan.Dance;    //调用的是TEuropean的Dance 方法
    59  SuperMan.Free;
    60
    61  SuperMan := TNorthEuropean.Create;
    62  SuperMan.Dance;   //调用的是TEuropean的Dance 方法
    63  SuperMan.Free;
    64
    65  SuperMan := TAsian.Create;
    66  SuperMan.Dance;  //调用的是TAsian的Dance 方法
    67  SuperMan.Free;
    68end;
    69
    70
  • 相关阅读:
    PythonStudy——greenlet 协程
    PythonStudy——事件 Event
    PythonStudy——单线程并发的实现
    2015年的总结
    kylin一种OLAP的实现
    分布式消息队列的使用kakfa
    第一次听到了docker
    Hive分布式的数据仓库
    dubbo服务框架学习
    Storm实时计算框架的编程模式
  • 原文地址:https://www.cnblogs.com/dreamszx/p/1572009.html
Copyright © 2011-2022 走看看