我有一个带有一个重要的抽象过程的父类,我在许多子类中都进行了重载,如下面的示例代码所示:

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/

10-09 09:33