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

Why do TObject.AfterConstruction and BeforeConstruction have public visibility?

今天,当我不得不重写 TObjectBeforeConstruction 方法时,我想到了一个非常简单的问题:

为什么 TObject 方法 AfterConstructionBeforeConstruction 具有 public 可见性?

我预计他们会 protected。 他们不是的原因是什么?

我无法想象在不调用 class 的构造函数或析构函数的情况下调用 AfterConstructionBeforeConstruction 的有效目的。你呢?

之前的一个问题询问为什么其他一些方法是 public 而不是受保护的,并且 the answer 是它们在某些时候需要被未附加到 class.

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

全部TObject的方法都是public.*我们大概可以找到理由来解释为什么每个方法都是public,但是在某一点上,我怀疑任何给定方法是 public 的根本原因是所有其他方法也是。

一旦 Delphi 与这些方法 public 一起发布,任何降低其可见性的行为都有破坏现有代码的风险。


* 由于某些原因,GetDisposedCheckDisposed 除外。与 TObject.

的大部分相比,它们相对较新