Почему TObject.AfterConstruction и BeforeConstruction имеют публичную видимость?
Сегодня мне пришёл в голову один очень простой вопрос. TObject
"s BeforeConstruction
метод:
Почему TObject
методы AfterConstruction
а также BeforeConstruction
иметь public
видимость?
Я ожидал, что они будут protected
, По какой причине они не?
Я не могу представить себе правильную цель, чтобы позвонить AfterConstruction
или же BeforeConstruction
без вызова конструктора или деструктора этого класса. Вы?
1 ответ
В предыдущем вопросе спрашивалось, почему некоторые другие методы являются открытыми, а не защищенными, и ответ состоял в том, что они в какой-то момент должны вызываться служебными функциями, которые не были присоединены к классу.
TObject.AfterConstruction
вызывается именно такой функцией полезности, System._AfterConstruction
, Если бы она была (строго) защищена, то эта автономная функция не имела бы доступа к методу.
Все методы TObject
являются общедоступными.* Мы можем, вероятно, найти обоснования, объясняющие, почему каждый метод является публичным, но в определенный момент я подозреваю, что основная причина для любого данного метода, являющегося публичным, заключается в том, что все остальные тоже.
После того, как Delphi был выпущен с этими открытыми методами, любое снижение их видимости могло бы привести к нарушению существующего кода.
* За исключением GetDisposed
а также CheckDisposed
по какой-то причине. Они относительно новы по сравнению с большей частью TObject
,