Комментарии

Модификаторы доступа public, protected и private
( 0 Голосов )

Начинающим осваивать ООП очень важно уяснить, чем отличаются друг от друга открытые, закрытые и защищенные методы и поля. Открытые методы, объявленные с модификатором доступа public, можно вызывать из любого класса или сценария; защищенные методы, объявленные с модификатором доступа protected, — только из экземпляра текущего класса или его подкласса; а закрытые методы, объявленные с модификатором доступа private, — только из экземпляра текущего класса.

Для чего требует такое различие методов? Дело в том, что вместе с классом, как правило, создаются некоторые методы, которые предполагается использовать в других классах. И зачастую это главная причина для создания класса. Поэтому такие методы должны быть открытыми, т.е. общедоступными.

Для сохранения компактности и конкретности назначения можно также создать вспомогательные методы, предназначенные для только поддержки основных открытых методов. Но эти методы не должны быть доступны за пределами их класса. Если, например, потребуется реорганизовать вспомогательные методы, не затрагивая код в остальной части программы, их можно объявить закрытыми, чтобы их нельзя было вызывать за пределами текущего класса.

Промежуточное положение занимают защищенные методы. Они могут использоваться в подклассах текущего класса, но не в тех классах, которые с ним не связаны.

Все сказанное выше относится и к полям в классах. Открытые поля доступны для любого класса, закрытые поля —только для экземпляров данного класса, а защищенные поля — только для данного класса и его подклассов.

Если поле или метод создается без модификатора доступа, такой элемент кода считается открытым. Так, если речь идет о прикладном программном интерфейсе (API) для класса, то имеются в виду открытые поля и методы. Ведь вносить изменения в интерфейс API без особой необходимости не стоит. А защищенные и закрытые поля и методы не относятся к API, и поэтому их можно свободно изменять, не затрагивая программы, опирающиеся на этот интерфейс.

Данное ограничение не накладывалось в первых версиях языка РНР, а вместо него были приняты соответствующие условные обозначения имен. Так, если имя поля или метода начиналось со знака подчеркивания (_), такой элемент кода считался закрытым и недоступным для использования за пределами текущего класса. Именно поэтому в исходном коде иногда можно встретить закрытые методы и поля, названные подобным образом.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код