WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Модификаторы доступа

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


Дата публикации: 17-03-2013

Большинство из нас знакомо с популярными модификаторами доступа: public, private и default. Здесь мы собираемся поговорить относительно некоторых интересных особенностей этих модификаторов.
Но, сначала первая вещь. Давайте постараемся понять что такое модификатор доступа. Модификатор доступа предоставляет доступ к специфической особенности класса. Особенность может быть следующей:

1. Сам класс
2. Конструктор класса
3. Член класса (данные или метод)

Для тех, кого интересует вопрос почему конструктор не перечислен в пункте 3, отвечаем, что конструктор - это не метод класса. Конструктор не является методом, так как он не может быть вызван как нормальный метод. Он особенный.

Таким образом, модификатор доступа управляет доступом к особенности. Для примера рассмотрите следующий фрагмент кода:

/** Demonstrates the use of access modifiers. */
public class AccessModifierDemo {

/** This data is private. */
private int iAmPrivate;
/** This data is available to all the classes in the same package. */
int iAmPackage;

/** Make constructor available only to classes in the same package
and subclasses. */
protected AccessModifierDemo() {
}

/** Main: Make it available to all. */
public static void main(String[] args) {
AccessModifierDemo amd = new AccessModifierDemo();
amd.iAmPrivate = 1; // Can do this because it belongs to the same class
amd.iAmPackage = 2;
System.out.println("main(): iAmPrivate = " + amd.iAmPrivate);
System.out.println("main(): iAmPackage = " + amd.iAmPackage);
}

}
Класс является public'ом, таким образом он доступен всем классам внутри или вне пакета. Элемент данных iAmPrivate является public'ом, таким образом он доступен только внутри этого класса. Другой элемент данных, iAmPackage доступен классам, принадлежащим только этому же пакету. Конструктор защищен. Это означает две вещи:
1. Все классы в таком же пакете могут создавать образец этого класса
2. Любой класс вне этого пакета может создавать непосредственно образец этого класса, только если он является подклассом этого класса

Таким образом, защищенный конструктор предоставляет несколько большие возможности в терминах доступа, чем модификатор, заданный по умолчанию. Здесь более интересные вещи. Вы когда-нибудь задумывались, почему метод main() имеет объявление public? Это важно, потому что точка входа для вашей программы вызывается виртуальной машиной. Если он не является public'ом, то как JVM получит доступ к нему?

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

Другая интересная грань модификаторов доступа - это замещение методов. В Java, методы не могут быть замещены, чтобы быть более private. Это означает, что если метод защищен в супер классе, то он может быть замещен public доступом в полученном классе, но не private или default доступом. Короче говоря, вы можете только увеличивать свободу при замещении. Если вы пытаетесь ее уменьшить, вы получите ошибку трансляции.

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

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

    Случайная цитата

    Неизвестный автор:

    "Случайное красивым не бывает."

    Опрос

    Какой браузер Вы используете?

    Internet Explorer
    Google Chrome
    Mozilla Firefox
    Netscape Navigator
    Maxthon Browser
    Opera
    Mozilla Suite
    SeaMonkey
    K-Meleon
    Safari
    Amaya
    Avant Browser
    SlimBrowser
    Другой...