Spec-Zone .ru
спецификации, руководства, описания, API
|
Модификаторы уровня доступа определяют, могут ли другие классы использовать определенное поле или вызвать определенный метод. Есть два уровня управления доступом:
public
, или частный на пакет (никакой явный модификатор).public
, private
, protected
, или частный на пакет (никакой явный модификатор).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
поля за исключением констант. (Многие из примеров в учебном руководстве используют общедоступные поля. Это может помочь проиллюстрировать некоторые тезисы кратко, но не рекомендуется для производственного кода.) Общедоступные поля имеют тенденцию соединять Вас с определенной реализацией и ограничивать Вашу гибкость в изменении Вашего кода.