Главная » Разработка для Android » ОБЛАСТЬ ВИДИМОСТИ – JAVA ДЛЯ ANDROID

0

 

Область видимости (scope) определяет, в каких частях программы видимы переменные, методы и другие символы. Вне области видимости символа этот символ недоступен и не может использоваться. В этом разделе мы поговорим об основных аспектах области видимости, начиная с наивысшего уровня.

Пакеты Java

Пакеты Java предоставляют механизм, позволяющий группировать взаимосвязанные типы в универсально-уникальном пространстве имен. Такое группирование не допускает конфликтов между идентификаторами, существующими в пространстве имен пакета, и идентификаторами, созданными и используемыми другими разработчиками в иных пространствах имен.

Типичная программа Java состоит из кода, взятого из множества деревьев пакетов (множество несмежных деревьев также называется forest – «лес»). Стандартная среда времени исполнения Java поддерживает такие пакеты, как Java. 1 ang и Java. uti 1. Кроме того, программа может зависеть от других распространенных библиотек, например библиотек из дерева org. apache. По традиции код приложения (то есть создаваемый вами код) попадает в пакет, чье имя представляет собой запись названия вашего домена наоборот, к которой затем добавляется название программы. Следовательно, если ваш домен называется androidhero. com, то корень дерева пакетов будет называться com .androidhero, а сам код расположится в пакетах с названиями типа com .androidhero. awesomeprogram и com .androidhero. geohottness .service. Компоновка типичного пакета приложения для Android может содержать пакет для долговременного хранения информации, пакет для пользовательского интерфейса, а также пакет для логики приложения или код контроллера.

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

Для объявления класса как входящего в состав пакета в первой строке файла, содержащего определение класса, ставится ключевое слово package:

Не пытайтесь сократить имя пакета! Поскольку сделанная наскоро временная реализация порой сохраняется годами, представьте себе, как надолго может стать вашей головной болью пакет, имя которого окажется неуникальным.

В некоторых крупных проектах используются совершенно разные домены первого уровня, позволяющие отделять друг от друга пакеты с общедоступными (публичными) АРІ от пакетов, которые реализуют эти API. Например, интерфейс программирования приложений Android использует пакет верхнего уровня android, а классы реализации (implementation classes) обычно находятся в пакете com. android. Исходный код языка Java от компании Sun организован по схожему принципу. Общедоступные интерфейсы программирования приложений располагаются в пакете Java, а код реализации – в пакете sun. В любом случае приложение, импортирующее пакет реализации, явно делает что-то ненадежное и попадает в зависимость от кода, не относящегося к общедоступным API.

В то время как, в принципе, существует возможность добавлять код в уже имеющиеся пакеты, это обычно считается порочной практикой. Вообще, пакет является не только пространством имен, но и деревом, идущим от одного источника как минимум до обратного доменного имени. Это всего лишь неписаное правило, но разработчик Java считает, что в источнике пакета com.brashandroid. coolapp.ui он найдет код пользовательского интерфейса приложения СооІАрр для Android. И разработчик будет неприятно удивлен, если ему придется искать вторую часть исходников в другом пакете.

О пакетах Java подробнее рассказано в руководстве по этому языку: http:// download.oracle.com/javase/tutorial/java/package/packages.html.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии