Почему TObject.AfterConstruction и BeforeConstruction имеют публичную видимость?

Сегодня мне пришёл в голову один очень простой вопрос. TObject "s BeforeConstruction метод:

Почему TObject методы AfterConstruction а также BeforeConstruction иметь public видимость?

Я ожидал, что они будут protected, По какой причине они не?

Я не могу представить себе правильную цель, чтобы позвонить AfterConstruction или же BeforeConstruction без вызова конструктора или деструктора этого класса. Вы?

1 ответ

Решение

В предыдущем вопросе спрашивалось, почему некоторые другие методы являются открытыми, а не защищенными, и ответ состоял в том, что они в какой-то момент должны вызываться служебными функциями, которые не были присоединены к классу.

TObject.AfterConstruction вызывается именно такой функцией полезности, System._AfterConstruction, Если бы она была (строго) защищена, то эта автономная функция не имела бы доступа к методу.

Все методы TObject являются общедоступными.* Мы можем, вероятно, найти обоснования, объясняющие, почему каждый метод является публичным, но в определенный момент я подозреваю, что основная причина для любого данного метода, являющегося публичным, заключается в том, что все остальные тоже.

После того, как Delphi был выпущен с этими открытыми методами, любое снижение их видимости могло бы привести к нарушению существующего кода.


* За исключением GetDisposed а также CheckDisposedпо какой-то причине. Они относительно новы по сравнению с большей частью TObject,

Другие вопросы по тегам