Импорт классов и пакетов
Внимательный читатель заметил во второй строке листинга 3.2 новый оператор
import
. Для чего он нужен?
Дело в том, что компилятор будет искать классы только в -одном пакете, именно, в том, что указан в первой строке файла. Для классов из другого пакета надо указывать полные имена. В нашем примере они короткие, и мы могли бы писать в листинге 3.2 вместо
Base
полное имя
p1.Base.
Но если полные имена длинные, а используются классы часто, то стучать по клавишам, набирая полные имена, становится утомительно. Вот тут-то мы и пишем операторы
import
, указывая компилятору полные имена классов.
Правила использования оператора
import
очень просты: пишется слово
import
и, через пробел, полное имя класса, завершенное точкой с запятой. Сколько классов надо указать, столько операторов
import
и пишется.
Это тоже может стать утомительным и тогда используется вторая форма оператора
import
— указывается имя пакета или подпакета, а вместо короткого имени класса ставится звездочка *. Этой записью компилятору предписывается просмотреть весь пакет. В нашем примере можно было написать
import p1.*;
Напомним, что импортировать можно только открытые классы, помеченные модификатором
public
.
Внимательный читатель и тут настороже. Мы ведь пользовались методами классов стандартной библиотеки, не указывая ее пакетов? Да, правильно.
Пакет
java.iang
просматривается всегда, его необязательно импортировать. Остальные пакеты стандартной библиотеки надо указывать в операторах
import
, либо записывать полные имена классов.
Подчеркнем, что оператор
import
вводится только для удобства программистов и слово "импортировать" не означает никаких перемещений классов.
Знатокам C/C++
Оператор
import
не эквивалентен директиве препроцессора
include
— он не подключает никакие файлы.