当我写一个类时,我知道我可以使用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
作为强大的指导原则,您不应错过从父类调用继承的构造函数.通常这意味着您无法实例化父类使用的对象.我认为问题中的代码非常可疑.
constructor TMemoria.Create(dest, r1: integer); begin inherited Create; end;
这将调用无参数构造函数 TObject
并且不会调用在直接祖先中声明的构造函数.应该清楚这一点,因为没有提供参数.
有关详细信息,请参阅文档:http://docwiki.embarcadero.com/RADStudio/en/Methods_(Delphi)#Inherited
作为强大的指导原则,您不应错过从父类调用继承的构造函数.通常这意味着您无法实例化父类使用的对象.我认为问题中的代码非常可疑.