Рубрики
Без рубрики

В чем разница между общедоступным, защищенным и закрытым в Java?

Почему мы заботимся о том, чтобы при изменении Java access общее правило заключалось в использовании только минимального уровня… С пометкой java, разработка, объяснение, похожее на пять, программирование.

Почему нас это волнует

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

Так как же нам принять решение? В порядке от наименее частного к наиболее частному:

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

Защищенный обеспечивает меньший доступ, чем общедоступный, делая участника видимым для классов в одном пакете или любых подклассах. Это область действия пакета и дочерняя область – потенциально самый запутанный уровень доступа. Предоставьте защищенный доступ, если вы хотите выполнить некоторые внутренние действия, которые не должны быть общедоступными, но все же намерены наследовать класс и потенциально переопределять подклассы. Если вы хотите изменить доступ с закрытого на защищенный исключительно для модульного тестирования, попробуйте задокументировать, что его функциональность не предназначена для перезаписи. Если бы лорд или леди, у которых на флаге был тот же фамильный герб, что и у меня, подошли к воротам моего замка, им немедленно разрешили бы въезд. Они могли входить и выходить из главного зала, когда им заблагорассудится.

Без модификатора (по умолчанию) участник будет доступен во всех классах, входящих в один и тот же пакет. Это область действия пакета. Члены моей семьи с гербом могут находиться внутри замка, но только высокопоставленные члены, такие как мать королевы, которым были предоставлены особые привилегии, могут получить доступ в библиотеку или поговорить со стражами подземелья.

Модификатор private ограничивает доступ участников только к этому определенному классу. Это также называется областью действия класса. Это хорошее отправное место. Чтобы понять, почему, обратите внимание, что изменение доступа с частного на защищенный не будет кардинальным изменением, но может пойти противоположным путем. Попробуйте начать здесь и добавить доступ, когда это необходимо. В нашей аналогии замок не полностью открыт для моих родственников. Например, я бы никогда не позволил своей матери попасть в сокровищницу.

Поэтому не забывайте пить много воды, умываться перед сном и использовать минимальный уровень доступа, необходимый в вашем java-коде.

общественный
защищенный
без модификатора
частный

Оригинал: “https://dev.to/amandasopkin/what-is-the-difference-between-public-protected-and-private-in-java-9lj”