модификатор доступа

Модификаторы (спецификаторы) доступа

Различают три модификатора доступа:

  • public (общедоступный) — позволяет иметь доступ к свойствам и методам классам из любого места: из класса, в котором он объявлен, из класса-наследника, из вне класса.
  • protected (защищенный) — позволяет иметь доступ и родительскому (в котором определен сам член класса), и наследуемым классам; из кода за пределами класса доступа нет.
  • private (закрытый) — ограничивает область видимости так, что доступ к нему имеет только тот класс, в котором объявлен сам элемент.

Эти модификаторы есть у переменных и методов класса. По умолчанию методы все public.

Принцип работы модификаторов доступа

Модификаторы доступа

Справа вверху есть класс Myclass. У него три свойства — public, protected,private. Плюс у него есть метод myMethod с такими же модификаторами. Есть класс-наследник NewClass (справа внизу). У него тоже свой метод. Создаем по одному объекту от каждого класса (левый рисунок). И проверяем, начиная с $obj:

  • Обращаемся к публичному свойству — ДА.
  • Обращаемся к protected — НЕТ, т.е. надо обратиться к методу класса MyClass, который в свою очередь обратится к protected — ДА.
  • Обращаемся к private — НЕТ, т.е. надо обратиться к методу класса MyClass, который в свою очередь обратится к private — ДА.

Проверяем, начиная с $obj1:

  • Обращаемся к публичному свойству — ДА.
  • Обращаемся к protected — НЕТ, т.е. надо обратиться к методу класса-наследника NewClass, который и обратится к protected класса-родителя — ДА.
  • Обращаемся к private — НЕТ, надо обратиться к методу класса-наследника NewClass, который и обратится к private класса-родителя — НЕТ. Это не сработает, т.к. к private можно обратиться только из класса, в котором он сделан.
  • Чтобы обойти неудачу, надо в классе-наследнике вызвать метод класса-родителя, который в свою очередь обратится к private в классе MyClass. И все получится.



Добавить комментарий

Ваш e-mail не будет опубликован.