为什么TObject.AfterConstruction和BeforeConstruction具有公众可见性?

Ren*_*ann 8 delphi tobject delphi-xe4

如今,一个很简单的问题来到我的脑海里,当我不得不重写TObjectBeforeConstruction方法:

为什么TObject方法AfterConstructionBeforeConstructionpublic知名度?

我希望他们是protected.他们不是的原因是什么?

我无法想象调用AfterConstructionBeforeConstruction不调用该类的构造函数或析构函数的有效目的.你呢?

Rob*_*edy 9

之前的一个问题是为什么其他一些方法是公开的而不是受保护的,答案是它们在某些时候需要被没有附加到类的效用函数调用.

TObject.AfterConstruction被这样的效用函数调用,System._AfterConstruction.如果它(严格)受到保护,那么该独立函数将无法访问该方法.

所有方法TObject都是公开的.*我们可能找到理由来解释为什么每种方法都是公开的,但在某一点上,我怀疑任何给定方法公开的根本原因是所有其他方法也是公开的.

一旦Delphi与这些方法公开发布,其可见性的任何降低都有可能破坏现有代码.


*除了GetDisposedCheckDisposed出于某种原因.与大部分相比,它们相对较新TObject.