今天,当我不得不重写TObject
的BeforeConstruction
方法时,我想到了一个非常简单的问题:
为什么TObject
方法AfterConstruction
和BeforeConstruction
有public
可见性?
我希望他们是protected
。他们不是的原因是什么?
我无法想象调用AfterConstruction
或BeforeConstruction
不调用该类的构造函数或析构函数的有效目的。你?
今天,当我不得不重写TObject
的BeforeConstruction
方法时,我想到了一个非常简单的问题:
为什么TObject
方法AfterConstruction
和BeforeConstruction
有public
可见性?
我希望他们是protected
。他们不是的原因是什么?
我无法想象调用AfterConstruction
或BeforeConstruction
不调用该类的构造函数或析构函数的有效目的。你?
上一个问题询问为什么其他一些方法是公共的而不是受保护的,答案是它们在某些时候需要由未附加到类的实用程序函数调用。
TObject.AfterConstruction
被这样一个实用函数调用,System._AfterConstruction
. 如果它受到(严格)保护,那么该独立函数将无权访问该方法。
的所有方法TObject
都是公开的。* 我们或许可以找到解释为什么每种方法都是公开的理由,但在某一点上,我怀疑任何给定方法公开的根本原因是所有其他方法也是公开的。
一旦 Delphi 公开了这些方法,任何降低它们的可见性都会有破坏现有代码的风险。
GetDisposed
*和CheckDisposed
, 出于某种原因除外。与大部分TObject
.