繁体   English   中英

Delphi继承和构造函数创建,覆盖基类创建

[英]Delphi inheritance and constructor create, override base class create

可以说我有以下(示例)类:

TMyClass1 = class(TThread)
  constructor Create(CreateSuspended: Boolean);
end;

TMyClass2 = class(TMyClass1)
  constructor Create(CreateSuspended: Boolean);
end;

码:

constructor TMyClass1.Create(CreateSuspended: Boolean);
begin
  inherited;
end;

constructor TMyClass2.Create(CreateSuspended: Boolean);
begin
  inherited;
end;

如何防止TMyClass2.Create不调用TMyClass1的构造函数,但仍可以正确创建类?

在实际代码中,TMyClass1的创建执行了TMyClass2.create中不应发生的操作。 TMyClass1有很多功能和过程,我不想为TMyClass2复制。

有很多方法可以做到这一点。 仅举例来说,您可以使用多个构造函数:

TMyClass1 = class(TThread)
protected
  constructor CreateInternal(CreateSuspended: boolean);
public
  constructor Create(CreateSuspended: boolean);
end;

....

constructor TMyClass1.Create(CreateSuspended: boolean);
begin
  CreateInternal(CreateSuspended);
  ... do other things which shouldn't be in Class2 ...
end;

constructor TMyClass2.Create(CreateSuspended: boolean);
begin
  inherited CreateInternal(CreateSuspended);
  ...
end;

但通常看起来像是设计错误。 也许您应该使TMyClass0 = class(TThread),TMyClass1 = class(TMyClass0),TMyClass2 = class(TMyClass0),也许其他,但是您的描述是可疑的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM