На Интуите написано много всего интересного хоть и неинтересным языком =)
Импортирование пакетов и типов (классов и интерфейсов) пакетов создано для упрощения жизни. С импортированными пакетами доступ к переменным пакета может быть по простому имени. Можно и обойтись без импортов, но тогда каждый раз нужно будет писать полное имя переменной. Однако, при компиляции все имена приводятся к полным. И компилятор тут работает в следующей последовательности:
- сначала просматриваются выражения, импортирующие типы;
- затем другие типы, объявленные в текущем пакете, в том числе в текущем модуле компиляции;
- наконец, просматриваются выражения, импортирующие пакеты.
package my_geom;
class Point {
}
а в другом модуле компиляции:
package my_geom;
import java.awt.Point;
class Line {
void main() {
System.out.println(new Point());
}
}
то складывает неопределенная ситуация: какой Point создать и вывести: из пакета my_geom или импортированный java.awt.Point. И вот тут нужно руководствоваться приведенной выше очередностью. Т.к. мы импортировали тип java.awt.Point, то именно этот поинт будет создаваться. Если бы импорт был такой (не конкретный тип, а пакет):
import java.awt.*;
то результат был бы другой (использовался бы тип, объявленный в текущем пакете, т.е. в пакете my_geom)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ