Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: Классы и Объекты
Раздел: Больше на Классах
Управление Доступом к Элементам Класса
Домашняя страница > Изучение Языка Java > Классы и Объекты

Управление Доступом к Элементам Класса

Модификаторы уровня доступа определяют, могут ли другие классы использовать определенное поле или вызвать определенный метод. Есть два уровня управления доступом:

class может быть объявлен с модификатором public, когда, что class видим ко всем классам всюду. Если у class нет никакого модификатора (значение по умолчанию, также известное как частный на пакет), это видимо только в пределах его собственного пакета (пакеты называют группами связанных классов — Вы узнаете о них в более позднем уроке.)

На задействованном уровне можно также использовать public модификатор или никакой модификатор (частный на пакет) так же, как с высокоуровневыми классами, и с тем же самым значением. Для элементов есть два дополнительных модификатора доступа: private и protected. private модификатор определяет, что к элементу можно только получить доступ в его собственном class. protected модификатор определяет, что к элементу может только получить доступ в пределах его собственного пакета (как с частным на пакет) и, кроме того, подкласс его class в другом пакете.

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

Уровни доступа
Модификатор Класс Пакет Подкласс Мир
public Y Y Y Y
protected Y Y Y N
никакой модификатор Y Y N N
private Y N N N

Первый столбец данных указывает, есть ли у самого class доступ к элементу, определенному уровнем доступа. Как можно видеть, у class всегда есть доступ к его собственным элементам. Второй столбец указывает, есть ли у классов в том же самом пакете как class (независимо от их происхождения) доступ к элементу. Третий столбец указывает, есть ли у подклассов class, объявленного вне этого пакета, доступ к элементу. Четвертый столбец указывает, есть ли у всех классов доступ к элементу.

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

Давайте смотреть на набор классов и видеть, как уровни доступа влияют на видимость. Следующие данные показывают эти четыре класса в этом примере и как они связываются.

Классы и Пакеты Примера, Используемого, чтобы Иллюстрировать Уровни доступа

Классы и Пакеты Примера, Используемого, чтобы Иллюстрировать Уровни доступа

Следующая таблица показывает, где элементы Альфы, class видим для каждого из модификаторов доступа, которые могут быть применены к ним.

Видимость
Модификатор Альфа Бета Alphasub Гамма
public Y Y Y Y
protected Y Y Y N
никакой модификатор Y Y N N
private Y N N N

Подсказки относительно Выбора Уровня доступа: 

Если другие программисты используют Ваш class, Вы хотите гарантировать, что ошибки от неправильного употребления не могут произойти. Уровни доступа могут помочь Вам сделать это.

  • Используйте самый рестриктивный уровень доступа, который имеет смысл для определенного элемента. Использовать private если у Вас нет серьезного основания не к.
  • Избежать public поля за исключением констант. (Многие из примеров в учебном руководстве используют общедоступные поля. Это может помочь проиллюстрировать некоторые тезисы кратко, но не рекомендуется для производственного кода.) Общедоступные поля имеют тенденцию соединять Вас с определенной реализацией и ограничивать Вашу гибкость в изменении Вашего кода.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Используя это Ключевое слово
Следующая страница: Понимание Экземпляра и Элементов Класса