是在Delphi中自动调用的继承关键字



根据本页

http://www.delphibasics.co.uk/RTL.asp?Name=Inherited

它说:"它是在构造函数开始时调用的,在解构造函数结束时调用的。它不是强制性的,但被推荐为良好的实践。"

我没有正确理解吗?这是否意味着我们不需要在构造函数或析构函数中放入"herited",因为它将由编译器自动插入?

否,inherited不是自动调用的;你必须自己做(如果你想调用继承的过程,你通常会这样做)。您甚至可以在时选择,请参阅,例如,此答案。通常在构造函数的开头和析构函数的末尾执行此操作。

不,这不是它的意思;它的意思是,如果你有理由不调用它,你可以选择不调用它。在你重写的每个方法中,你应该几乎总是调用inherited,除非你需要在你的后代中不发生像父代那样的事情。

除非有充分的理由不这样做,否则应该始终将inherited作为构造函数的第一行和析构函数的最后一行调用。它是从不自动调用

Delphi让它变得非常容易;如果您重写的方法与父方法具有相同的参数,您甚至不必传递它们:

constructor TMyClass.Create(AOwner: TComponent);
begin
  inherited;          // Automatically passes AOwner to parent constructor
  // Do other construction here
end;
destructor TMyClass.Destroy;
begin
  // Do your own cleanup
  inherited;
end;

最新更新