当前位置:  开发笔记 > 编程语言 > 正文

Delphi子类继承

如何解决《Delphi子类继承》经验,为你挑选了1个好方法。

当我写一个类时,我知道我可以使用inherted关键字,所以我可以继承行为或TObject,例如:

type
 TOperation = class(TObject)
   constructor Create(dest, r1, r2: integer);
 end;

构造函数将有一个 inherited Create;.看下面的课:

type
 TAddition = class(TOperation)
   constructor Create(a1, a2: integer);
 end;

如果TAddition的第一行是 inherited Create;它意味着我当然继承了TOperation的行为.但这是否意味着我也继承了TObject的行为?(这是TOperation的超类).

当我继承父类的构造函数时(看看TAddition)我只继承了这个行为,不是吗?我没有从父班初始化任何东西

完整的代码在这里:

 TOperation = class(TOBject)
  private
   dest, v1, v2: integer;
  public
   constructor Create(dest, r1, r2: integer);
   property destination: integer read dest;
   property value1: integer read v1;
   property value2: integer read v2;
 end;

 TMemoria = class(TOperation )
  private
   dest, r1: integer;
  public
   constructor Create(dest, r1: integer);
   property destination: integer read dest;
   property register1: integer read r1;
 end;

 constructor TOperation.Create(dest, r1, r2: integer);
 begin

  //inherit from TObject
  inherited Create;
  Self.r1 := r1;
  Self.r2 := r2; //so on...

 end;

constructor TMemoria.Create(dest, r1: integer);
 begin

  //inherit from TObject OR inherit from TOperation?
  inherited Create;

 end;

David Heffer.. 8

constructor TMemoria.Create(dest, r1: integer);
begin
  inherited Create;
end;

这将调用无参数构造函数 TObject并且不会调用在直接祖先中声明的构造函数.应该清楚这一点,因为没有提供参数.

有关详细信息,请参阅文档:http://docwiki.embarcadero.com/RADStudio/en/Methods_(Delphi)#Inherited

作为强大的指导原则,您不应错过从父类调用继承的构造函数.通常这意味着您无法实例化父类使用的对象.我认为问题中的代码非常可疑.



1> David Heffer..:
constructor TMemoria.Create(dest, r1: integer);
begin
  inherited Create;
end;

这将调用无参数构造函数 TObject并且不会调用在直接祖先中声明的构造函数.应该清楚这一点,因为没有提供参数.

有关详细信息,请参阅文档:http://docwiki.embarcadero.com/RADStudio/en/Methods_(Delphi)#Inherited

作为强大的指导原则,您不应错过从父类调用继承的构造函数.通常这意味着您无法实例化父类使用的对象.我认为问题中的代码非常可疑.


如果父类需要这些参数,派生类如何不提供它们.这是一个巨大的代码味道.
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有