- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
今天,当我必须重写 TObject
的 BeforeConstruction
方法时,我想到了一个非常简单的问题:
为什么 TObject
方法 AfterConstruction
和 BeforeConstruction
具有 public
可见性?
我希望它们受到保护
。他们不这样做的原因是什么?
我无法想象在不调用该类的构造函数或析构函数的情况下调用 AfterConstruction
或 BeforeConstruction
的有效目的。你是吗?
最佳答案
上一个问题询问为什么其他一些方法是公共(public)的而不是 protected ,并且 the answer是它们在某些时候需要由未附加到该类的实用函数调用。
TObject.AfterConstruction
正是由这样一个实用函数 System._AfterConstruction
调用的。如果它受到(严格)保护,那么该独立函数将无法访问该方法。
所有 TObject
的方法都是公共(public)的。*我们或许可以找到基本原理来解释为什么每个方法都是公共(public)的,但在某个时刻,我怀疑底层的方法任何给定方法公开的原因是所有其他方法也是公开的。
一旦 Delphi 公开发布这些方法,任何对其可见性的降低都会有破坏现有代码的风险。
<小时/>* 由于某种原因,GetDispose
和 CheckDispose
除外。与大部分 TObject
相比,它们相对较新。
关于delphi - 为什么 TObject.AfterConstruction 和 BeforeConstruction 具有公共(public)可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30121253/
我试图使用下面的代码将 TObject.AfterConstruction 重定向到另一个过程,但一段时间后开始出现很多异常。注意:我使用这种重定向到许多其他解决方案。 unit Unit109; i
今天,当我必须重写 TObject 的 BeforeConstruction 方法时,我想到了一个非常简单的问题: 为什么 TObject 方法 AfterConstruction 和 BeforeC
我是一名优秀的程序员,十分优秀!