我在父级和子级中定义了虚函数Hello()
。如何从子Hello()?
TParent = class (TComponent)
public
procedure Hello(); virtual;
end;
TChild = class (TParent)
public
procedure Hello();
end;
procedure TChild.Hello;
begin
//call parent Hello();
end;
答案 0 :(得分:1)
您必须调用继承的方法。您还忘记添加覆盖属性:
program Project1;
type
TParent = class
procedure Hello(); virtual;
end;
TChild = class (TParent)
procedure Hello();override;
procedure Olleh;
end;
procedure TParent.Hello;
begin
writeln('pt');
end;
procedure TChild.Hello;
begin
inherited;
end;
procedure TChild.Olleh;
begin
inherited Hello;
end;
var child: TChild;
begin
child := TChild.Create;
child.Olleh;
child.Hello;
readln;
end.
或者,你可以通过明确指定要调用的方法来调用父方法" Hello",就像在Olleh
中一样。通常在一个重叠的方法inherited
是裸的,但有时你必须显式调用一个方法(例如在多个构造函数或重载的情况下)。