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

Java предоставляет 4 типа модификаторов доступа для контроля доступа к классам, переменным, методам и конструкторам.

  1. По умолчанию – видимый в пределах одного пакета. В модификаторе нет необходимости.
  2. Видимый только внутри класса (private)
  3. Видимый везде (public)
  4. Видимый для класса и подклассов (protected)

Модификатор по умолчанию – без ключевого слова

При использование модификатора доступа по умолчанию, ключевое слово не используется для  объявления классов, методов и т.д.

Переменные и методы объявленные без явного указания модификатора доступа, становятся доступными для всех классов в пределе пакета. Поля в интерфейсе неявным образом становятся public static final, а методы интерфейса по умолчанию public.

Пример:

Переменные и методы могут быть объявлены без любого модификатора доступа:

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

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

Классы и интерфейсы не могут быть объявлены с модификатором доступа private.

Обычно доступ к переменным с модификатором private осуществляется при помощи публичных методов.

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

Пример:

Здесь переменная format объявлена с модификатором доступа private, и у других классов нет возможность получить и изменить значение переменной напрямую.

Для получения значения переменной используется метод getFormat(),  для изменения значения метод setFormat(String).

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

Класс, метод, конструктор, интерфейс и т. д. к объявленный как public становится доступным для  любого другого класса. Следовательно поля, методы и блоки объявленные в классе как public, будут доступны за пределами класса, где они были объявлены.

При попытки получить доступ к публичным классам из другого пакета, необходимость импорта класса остаётся.

При наследование класса, все его публичные методы и переменные наследуются подклассами.

Пример:

В Java метод main()  всегда имеет модификатор с уровнем доступа public.

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

Переменные, методы и конструкторы которые объявлены как protected в суперклассе, могут быть доступны только для подклассов в других пакетах или в классах находящихся в том же пакете.

Модификатор доступа protected не может быть присвоен классу или интерфейсу. Так же методы и поля с модификатором protected можно объявить только в классе, но не в интерфейсе.

Пример:

Контроль доступа и наследование

Правила наследования методов:

  • Метод объявленный как public в суперклассе, так же будет иметь модификатор public в подклассе.
  • Метод объявленный как protected в суперклассе, в подклассе должен быть или protected или public, но не private.
  • Метод объявленный с модификатором private будет доступен только внутри класса.

 

 

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

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

18 − восемнадцать =