在Delphi中,如果没有显式调用,Delphi调用是否在重写过程上继承。
在Delphi中,重写(override)是一种面向对象编程的概念,允许子类重新实现父类的方法。如果没有显式调用重写方法,Delphi会自动调用父类的方法。
例如,假设我们有一个父类TParent
和一个子类TChild
,它们都有一个名为DoSomething
的方法。在TChild
中,我们重写了DoSomething
方法,但是在TChild
的实现中没有显式调用inherited
关键字。
type
TParent = class
public
procedure DoSomething; virtual;
end;
TChild = class(TParent)
public
procedure DoSomething; override;
end;
procedure TParent.DoSomething;
begin
// 父类的实现
end;
procedure TChild.DoSomething;
begin
// 子类的实现
end;
在这种情况下,如果我们创建一个TChild
对象并调用DoSomething
方法,Delphi会自动调用父类的DoSomething
方法,因为我们没有显式调用inherited
关键字。
var
Child: TChild;
begin
Child := TChild.Create;
try
Child.DoSomething; // 调用父类的DoSomething方法
finally
Child.Free;
end;
end;
因此,如果没有显式调用,Delphi调用是否在重写过程上继承,答案是:是的,Delphi会自动调用父类的方法,除非显式调用inherited
关键字。
领取专属 10元无门槛券
手把手带您无忧上云