Реклама:

Имя подпакета уточняется именем пакета следующим образом: package mypack.subpack;

тогда все классы этого файла и всех файлов с такой же первой строкой попадут в подпакет subpack пакета mypack. Можно создать и подпакет подпакета, package mypack.subpack.sub;

Отметим, что строка объявления пакета только одна и это обязательно первая строка файла, поэтому каждый класс попадает только в один пакет или подпакет. Компилятор Java может сам создать каталог с тем же именем mypack, a в нем подкаталог subpack, и разместить в них class-файлы с байт-кодами. Полные имена классов A, B будут выглядеть так: mypack.A, mypack.subpack.B.

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

Импорт классов и пакетов. Компилятор будет искать классы только в одном пакете, именно, в том, что указан в первой строке файла. Для классов из другого пакета надо каждый раз указывать полные имена. Если полные имена длинные, а используются классы часто, то экономнее использовать оператора import для того, чтобы подключить необходимые пакеты. Правила использования оператора import очень просты: пишется слово import и, через пробел, полное имя класса, завершенное точкой с запятой. Сколько классов надо указать, столько операторов import и пишется. В дальнейшем они уже используются без полного пути. Во второй форме оператора import указывается имя пакета или подпакета, а вместо короткого имени класса ставится звездочка *. Этой записью компилятору предписывается подключить все классы пакета, import mypack.*;

Напомним, что импортировать можно только открытые классы, помеченные модификатором public. Оператор import аналогичен директиве препроцессора include в С++ и аналогичен оператору with подключения пакетов в Maple.

Замечание. Пакет java.lang стандартной библиотеки Java импортировать не обязательно. Он подключен по умолчанию. Этот пакет содержит фундаментальные классы и интерфейсы языка Java. В частности, он содержит наиболее важные классы: Object, Class, Void, Compiler, Double и др.

Интерфейсы. В Java запрещено множественное наследование. При расширении класса после слова extends можно написать только одно имя суперкласса. С помощью уточнения super можно обратиться только к членам непосредственного суперкласса. Интерфейс (interface) Java решает проблему множественного наследования.

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

Определение интерфейса сходно с определением класса. Главное отличие состоит в том, что в интерфейсе у методов отсутствуют операторы тела {}. Описание интерфейса начинается со слова interface, перед которым может стоять модификатор public, означающий, что интерфейс доступен всюду. Если же модификатора public нет, интерфейс будет виден только в своем пакете.


⇐ Предыдущая страница| |Следующая страница ⇒