我有一个带有一个重要的抽象过程的父类,我在许多子类中都进行了重载,如下面的示例代码所示:
TCParent = Class
private
public
procedure SaveConfig; virtual; abstract;
end;
TCChild = Class(TCParent)
private
public
procedure SaveConfig; override;
end;
现在,我需要使用另一个接受参数的SaveConfig过程(重载)此过程,但是我不想在父类中进行大的更改,而这可能需要我去对所有其他子类进行更改。
有没有一种方法可以在此特定子类中重载SaveConfig,而无需对父类和从其继承的其他子类进行大的更改?
最佳答案
您可以使用reintroduce
添加新的重载方法。注意,子类中reintroduce; overload;
的顺序是必需的。如果您将它们反转,则代码将无法编译。
TCParent = Class
private
public
procedure SaveConfig; virtual; abstract;
end;
TCChild = Class(TCParent)
private
public
procedure SaveConfig; overload; override;
procedure SaveConfig(const FileName: string); reintroduce; overload;
end;
(已在Delphi 7中进行了测试,因此应在其及所有更高版本中都可以使用。)
关于delphi - 如何重载在父类中引入的虚函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13714827/