Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GoslingJava2.doc
Скачиваний:
139
Добавлен:
23.02.2016
Размер:
2.39 Mб
Скачать

10.1. Имена пакетов

Имя пакета должно использоваться только один раз, так что выбор содержательного и уникального имени составляет важный аспект проектирования пакета. Однако сейчас, когда программисты всей планеты разрабатывают пакеты на языке Java, невозможно выяснить, какие имена пакетов ими используются. Следовательно, выбор уникального имени представляет некоторую проблему. Если вы уверены, что пакет будет использоваться только внутри вашей организации, то можно привлечь к делу выбора имени внутреннего арбитра— это позволит быть уверенным, что все пакеты будут иметь отличающиеся имена.

Тем не менее в нашем огромном мире такой подход не сработает. Идентификаторы пакетов Java представляют собой обычные имена, так что неплохой способ обеспечить их уникальность— включить в них имя домена организации в Internet. Если вы работаете в компании Magic, Inc., то пакет с атрибутами может быть объявлен следующим образом:

package COM.magic.attr;

Обратите внимание: компоненты имени следуют в обратном порядке по сравнению с обычным именем домена, а имя домена верхнего уровня (в нашем случае COM) написано прописными буквами. Это сделано для того, чтобы избежать конфликтов с именами пакетов, которые не следуют этому соглашению— их названия могут случайно совпасть с именем домена верхнего уровня, но вряд ли при этом они будут написаны прописными буквами.

Если вы следуете данному соглашению, конфликты возникать не будут (разве что внутри вашей организации). Если проблемы все же возникли (скажем, в очень большой организации), можно пойти дальше и уточнить имя домена. Во многих крупных компаниях имеются внутренние домены с именами east, europe и т. д. Вы можете уточнить имя пакета с использованием имени внутреннего домена:

package COM.magic.japan.attr;

При этом имена пакетов могут стать довольно длинными, однако такая схема относительно безопасна— никто из тех, кто ее использует, не выберет имя, совпадающее с названием вашего пакета.

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

10.2. Пакетный доступ

Классы и интерфейсы, входящие в пакет, обладают одним из двух уровней доступа: пакетным (package) и открытым (public). Открытый класс или интерфейс доступен для программ, не входящих в пакет. Типы, не являющиеся открытыми, обладают областью видимости на уровне пакета: они доступны для всех программ того же пакета, но скрыты за его пределами, в том числе даже от программ во вложенных пакетах.

Члены классов тоже обладают уровнем доступа. Член, не объявленный с ключевым словом public, protected или private, может использоваться любой программой, входящей в пакет, но остается невидим за пределами пакета. Другими словами, по умолчанию идентификаторы обладают “пакетным” уровнем доступа, за исключением членов интерфейсов, которые являются открытыми.

Поля или методы, не объявленные в пакете с ключевым словом private, доступны для всех программ этого пакета. Следовательно, классы, входящие в тот же пакет, считаются “дружественными”, или “заслуживающими доверия”. Однако подпакеты не пользуются доверием в своих внешних пакетах. Например, защищенные и пакетные идентификаторы в пакете dit недоступны для программ в пакете dit.dat и наоборот.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]