Модификаторы доступа public, protected и private в Java. ~Prologistic.com.ua

Модификаторы доступа public, protected и private в Java

Java обеспечивает контроль доступа через три модификатора — public, protected and private. Мы не обязаны использовать эти модификаторы доступа всегда, поэтому у нас есть еще модификатор доступа по умолчанию, а именно default access, package-private или no modifier.

Мы можем использовать модификаторы доступа с классами, а также переменными класса и методами.

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

Разработчики языка разрешили использовать только «public» или «default» для работы с Java классами.

  • Если класс «public», то мы можем получить к нему доступ из любой точки мира, то есть от любого другого класса, расположенного в каких-либо других пакетах и т.д.
  • Мы можем иметь только один «public» класс в исходном файле. Также следует указать, что имя файла должно быть таким же, как имя public-класса.
  • Если класс имеет «default access» (доступ по умолчанию), то он может быть доступен только из других классов в одном пакете.

Приведенные выше правила применяются и к внутренним классам.

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

Мы можем иметь все четыре модификатора доступа для переменных-членов класса и методов. Однако правила доступа для членов класса будут применимы только после правил доступа на уровне класса. Например, если класс, имеющий доступ по умолчанию (default access), то он не будет виден в других пакетах и, следовательно, методы и переменные класса также будут не видны.

Мы будем изучать каждый случай в отдельности, а затем покажем доступы в простой программе.

Модификатор public

Если член класса «public», то он может быть использован в любом месте. Переменная или метод имеет доступ в глобальном масштабе. Это простой способ обеспечить доступ к членам класса, однако мы должны заботиться в использовании этого ключевого слова/модификатора с переменными класса, в противном случае кто-нибудь может изменить значения. Обычно переменные класса private, а доступ к этим переменным осуществляется через getter-setter методы.

Модификатор private

Если член класса «private», то он будет доступен только внутри того же класса. Это наиболее ограниченный доступ, поэтому член класса не будет виден для внешнего мира. Обычно переменные класса и методы, предназначенные для использования только внутри класса, делают private.

Модификатор protected

Если член класса «protected», то он будет доступен только для классов в одном пакете и в подклассах. Этот модификатор менее ограничен, чем private, но более ограничен, чем public. Обычно мы используем это ключевое слово/модификатор, чтобы убедиться, что переменные класса доступны только для подклассов.

Модификатор default

Если в члене класса не указан какой-либо модификатор доступа, то он имеет доступ по умолчанию (default). Правила доступа подобны классам и членам класса с доступом по умолчанию. В этом случае доступ будет только для классов в одном пакете. Этот доступ является более ограниченным, чем public и protected, но менее ограничен, чем private.

Цепочка доступности: от менее доступных к более доступным

(менее доступный) private < default < protected < public (самый доступный)

Давайте напишем несколько простых классов, где мы увидим модификаторы доступа в действии.

TestA.java

Обратите внимание, что класс TestA имеет доступ по умолчанию

TestB.java

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

TestC.java

Класс TestB доступен, потому что он public. Только public-члены класса TestB доступны, потому что класс TestC не в том же пакете, и не подкласс класса TestB.

TestE.java

Как только класс ТестE стал подклассом TestB, мы можем получить доступ к защищенным членам класса TestB.

Вот и все модификаторы доступа в Java. Только не путайте default и protected доступы. Легкий способ помнить, что доступ по умолчанию (default ) является более ограниченным, чем protected, а также то, что protected-члены доступны в подклассах.

Следите за обновлениями на prologistic.com.ua

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

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