Знакомство с protected (модификатор доступа внутри класса)

Эта статья ограниченно ознакамливает читателя с доступом protected. Поскольку степенью доступа может быть применена и к элементам класса, и к самому классу, мной решено не смешивать и то и это в одну статью, а начать с попроще. Попроще, это, по-моему, управление доступом к внутренним частям класса. Именно об этом доступе здесь и будет расписано.
В классах есть три варианта защитить части класса от внешнего влияния: public, private и protected. Новичков многих почти всегда интересует, что это за доступ такой protected. Если с приватной секцией, например, понятно, что она такое, но как правило поначалу непонятно, где она нужна, то с протектед секцией не понятно, ни что она такое, ни зачем она нужна.
  • Различие между private и protected проявляется только внутри классов, порожденных от базового класса.
В общем, чтобы это понять, нужно как минимум изучить какой-нибудь код. Вот, например, такой:

Предполагаю, что многие читатели сразу сфокусирут своё внимание вовнутрь main, где написано, что это можно, а это нельзя. Внутри main() происходит ровно то же, что всегда происходит при взаимодействии с private частями класса: востребован посредник для полноценной работы. Но protected как раз и отличает то, что оно позволяет избежать посредничества, но с одним но: избежать посредничества можно внутри класса-наследника. Т. е. для того, чтобы не использовать посредника между классом-наследником и классом-родителем используют protected. Внутри B посредников для функции родительского ему A нет.
Для начала хорошо бы понимать, что класс-наследник легко может использовать родительские функции. По этой причине внутри класса-наследника возможно использовать функцию show(), несмотря на то, что она как будто бы не описана. А вот дальшше и начинается основное. Эта функция может быть прописана в одной из трёх секций доступа: или private, или public, или protected.

  • private: — для доступа к show внутри foo() нужен посредник
  • public: — для доступа к show внутри foo() посредник не нужен
  • protected: — для доступа к show внутри foo() посредник не нужен
Суть в том, что использованием protected — внутри потомка доступ открывается, а вне потомка закрывается.
Когда вы проникнитесь этой идеей (а она не так сложна, как кажется поначалу), вам может показаться, что очень удобно это использовать, но не стоит заблуждаться. Желательно избегать protected, предпочитая private.
Статья была полностью переписана 08.04.2018г.
Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

5 комментариев: Знакомство с protected (модификатор доступа внутри класса)

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

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

− 5 = 3

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/aeksandr-stepanov/ot-matematiki-k-obobschennomu-programmirovaniu-22872907/?lfrom=15589587
Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор эфолюция человека

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок