Подумайте об иерархии, как в файловой системе. В Java пакеты похожи на каталоги, а классы похожи на файлы. Пакеты предназначены для размещения набора связанных классов. Когда есть группы пакетов, которые логически связаны друг с другом, их можно назвать так, чтобы они отображались как члены большей иерархии. Глядя на приведенный выше пример java.awt. *, Я мог бы поместить классы для AWT в jar1. Это будет иметь следующую структуру:
jar-1
\-java
\-awt
В каталоге AWT вы найдете классы и интерфейсы, которые объявляют себя члены пакета java.awt.
Теперь я хочу, чтобы реализовать некоторые шрифты для AWT, но я положил их в отдельную баночку:
каталог
jar-2
\-java
\-awt
\-fonts
Шрифт, где классы и интерфейсы для шрифтов, которые я создал для AWT.
Когда вы переходите к программе с использованием AWT и моих шрифтов, сначала вы должны включить как jar-1, так и jar-2 в свой CLASSPATH. Когда вы идете, чтобы включить классы, вы не получите никакой обратной связи, как, к которому баночка компилятор нашел их.
//this loads all classes in the java.awt directory
// which happen to come from jar-1
include java.awt.*
Если вы хотите шрифты,
//Load all classes in the java.awt.fonts directory
// which happen to come from jar-2
include java.awt.fonts.*
К компилятором и runtime иерархия выглядит как одно большое дерево.Это не означает, что все классы физически находятся в одном и том же месте. Сказав, что я должен сделать два очка; 1) Разделение пакетов в одной и той же иерархии на разные банки не рекомендуется, так как это будет запутывать и поддерживать головную боль, а 2) объявлять пакеты как расширения чей-либо структуры пакетов - крайне плохая форма, даже если компилятор позволяет это сделать.
Да, но в параграфе говорится, что "" Сначала пакеты выглядят иерархическими, но они не являются ", но они иерархичны в структуре параллельной файловой системы, поэтому цветовые пакеты включены в пакет java.awt. абзац говорит другую вещь ... – xdevel2000
Ответ был большой для комментария, пожалуйста, посмотрите мое последнее изменение в ответе –