[英]Override super class constructor with base class constructor using Reflection
[英]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.