让我们假设两个类:
Parent = class
public
procedure virtFunc(); virtual;
procedure other();
end;
Child = class(Parent)
public
procedure virtFunc(); override;
end;
通常,从任何地方调用Child
示例上的virtFunc
都将调用该方法的Child
实现。然而,有时调用同一级别的实现是有用的:
procedure Parent.other();
begin
virtFunc(); // I want to call Parent.virtFunc(), not Child.virtFunc()
end;
"我尝试了什么"Parent(Self).virtFunc()
(Self as Parent).virtFunc()
而且很明显,我可以(但这不是问题):
- 对它们进行不同重命名(childFunc与parentFunc),
- 卸下
virtual
。
如何在 Delphi 中调用方法的当前级别(非多态)版本?
对于那些谁知道c++,我想一些等价于Parent::virtFunc()
2条答案
按热度按时间jm81lzqq1#
我认为,做到这一点的唯一办法是:
1.通过调用
Parent
中的非虚拟方法实现Parent.virtFunc
。1.当你想以非多态的方式调用
virtFunc
时,你就调用那个非虚拟的方法,而不是调用virtFunc
。d8tt03nd2#
一个
两个