初探Object Pascal的类(九)

继承(Inheritance)

在Object Pascal中,类的最强大功能之一就是可以通过继承得到扩展。

继承(Inheritance)是指取一个现有的类,通过由它派生新类来增加功能。

开始取得类称为基类(base class)或者祖先类(ancestor class),新建立的类称为派生类(derived class)。

为了说明这些概念,我们再次回到TAirplane类。众所周知,在民用和军用领域有很大的区别,为了表示一架军用飞机,可以从TAirplane中派生一个类,并增加一些功能:

  TMilitaryPlane = class(TAirplane)  { TMilitaryPlane从TAirplane基类继承下来}
  private
    TheMission: TMission;
    function GetStatus(var StatusString: string): Integer; override;
    { override覆盖基类的GetStatus方法}
    constructor Create(AName: string; AType: Integer);
  protected
    procedure TakeOff(Dir: Integer); override;
    procedure Land; override;
    procedure Attack; virtual;
    { Attack, SetMission为TMilitaryPlane新增方法}
    procedure SetMission; virtual;
  end;

TAirplane所有内容,TMilitaryPlane都有,此外它还增加了一些新内容。注意类声明的第1行,关键字class后面括弧里的类名用于指示编译器此类是从另一类派生而来,被派生的类就是基类,在这里,基类是TAirplane类。

Note

当从另一个类派生类时,除了增加了一些新功能外,新类继承了基类的所有功能。可以给新类增加字段和方法,但不能删除基类所提供的任何内容。

private段中,有一行声明了TMission类实例,在此没有给出声明,但它封装了军用飞机所要处理的每一项军务:瞄准、导航、进出口高度和航向等等。这也说明作为另一个类的实例字段的用法,实际上,在Delphi中具体编程时,会看到很多。

以上代码在Delphi7中测试通过,示例代码下载:继承(TMilitaryPlane).rar

posted on 2011-12-30 14:00  pchmonster  阅读(923)  评论(0编辑  收藏  举报

导航