В этой статье будут рассмотрены модификаторы доступа Java и примеры их работы

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

Модификаторы доступа Java используются для обеспечения контроля доступа с использованием трех ключевых значений — private, protected и public.

Не всегда есть необходимость объявлять модификаторы доступа, поэтому еще существует модификатор по умолчанию — default access“, который также называют “package-private” или “no modifier.

Модификаторы доступа могут быть использованы для класса, так и при объявлении методов и переменных этого класса.


Для объявления класса верхнего уровня могут быть использованы только модификатор доступа public или default. 

  1. Если класс public, тогда он доступен с любого места программы, то есть с другого класса или пакета
  2. В программе должен быть объявлен только один класс верхнего уровня public в отдельном файле
  3. Если класс имеет доступ по умолчанию default, тогда он может быть доступен классами только изнутри пакета

Модификаторы доступа Java для членов класса

Для объявления методов и переменных класса могут быть использованы все 4 модификатора доступа. Однако следует помнить, что сначала применяются правила доступа к классу, а затем к его членам. Для примера, если класс имеет доступ по умолчанию, тогда его методы и переменные не будут видны из других пакетов.

Далее будут рассмотрены примеры работы модификаторов доступа Java

Модификатор доступа Java — public (публичный)

Класс доступен отовсюду, члены (переменные и методы) класса доступны глобально. Это самый простой вариант объявления доступа, однако необходимо с осторожностью применять его для переменных в связи с возможности нежелательной корректировки их значений. Поэтому обычно переменные имеют доступ private  и для работы с ними объявляются getter-setter методы.

Модификатор доступа Java — private (закрытый)

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

Модификатор доступа Java — protected (защищенный)

Класс доступен только классам и подклассам внутри пакета. Этот модификатор доступа менее ограниченный чем private, но более защищенный чем public. Обычно используется для обеспечения доступа переменных только подклассами.

Модификатор доступа Java — default access (по умолчанию)

Если класс не имеет модификатора доступа, то к нему применяется этот тип. Класс и его члены доступны только внутри пакета. Он более ограничен чем protected и public, но менее защищен чем private.

(Менее доступный) private < default < protected < public (Более доступный)

Ниже представлена таблица, поясняющая описанные выше правила работы модификаторов доступа в Java

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

TestA.java

Обратите внимание на то что класс TestA имеет доступ по умолчанию, а метод private класса доступен для всех остальных частей того же класса.

TestB.java

Обратите внимания на то что класс TestB находится в том же пакете что и класс TestA, следовательно имеет доступ ко всем методам этого класса, за исключением методов private.

TestC.java

В классе TestC доступен только метод methodPublic из класса TestB. Это обусловлено тем что только данный метод отмечен как public.

TestE.java

По сколько класс TestE наследуется из класса TestB, то в нём кроме метода methodPublic(модификатор public), доступен так же и метод methodProtected(модификатор protected)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

11 + 14 =