Java Packages und Importe
Willemers Informatik-Ecke
Beim Erstellen einer neuen Klasse fragt Eclipse nach einem Package und reagiert ein wenig beleidigt, wenn man keinen Package-Namen angibt.

Packages ordnen Klassen wie Verzeichnisse die Dateien auf einer Festplatte. Und tatsächlich legen die meisten Compiler Klassen des gleichen Packages in einem Verzeichnis mit dem Package-Namen ab.

Ein Klassenname muss eindeutig sein. Gehört die Klasse zu einem Package, muss der Name nur innerhalb des Packages eindeutig sein. Bei wachsender Zahl von Klassen, ist es durchaus möglich, dass Klassennamen wie Person oder Datum wiederholt auftreten.

Der Befehl package muss immer zuerst in einer Programmdatei stehen und darf in der Datei nur einmal erscheinen. Wird keine Package angelegt, landen alle Namen in einem unbenannten Package.

package fibu;
class Datum {
   ...
}
Mit dieser Zeile gehört die Klasse Datum zur Package fibu. Die Klasse kann nun von außen als fibu.Datum angesprochen werden und unterscheidet sich so von einer Klasse rechnung.Datum.

Muss der Package-Name weltweit eindeutig sein, verwendet man die URL der Website, dreht diese allerdings um. So könnte man das Package de.firma.fibu nennen. Natürlich muss diese Struktur dann auch in den Verzeichnissen nachgebildet werden.

Der Compiler importiert ohne weiteres Zutun drei Arten von Packages. Das Package ohne Namen, das Package java.lang und das Package zu dem die Datei selbst gehört.

Auch das Weglassen der Deklaration von public bei einer Klasse hat Konsequenzen. Ohne public- oder private-Deklaration ist eine Klasse nur innerhalb des eigenen Packages zugreifbar.

import

Die Nutzung fremder Packages erfolgt durch den Befehl import. Wird er verwendet, können die Klassen der Packages ohne Angabe des Package-Namen verwendet werden. Bei der Verwendung von Java-Paketen wird als Basis java verwendet.

Betrachten wir als Beispiel die AWT-Bibliothek von Java, die beispielsweise die Klasse Point für einen Punkt auf dem Bildschirm enthält. Wenn Sie ein Objekt von der Klasse Point anlegen möchten, können Sie den Compiler auf zwei Arten darauf hinweisen, wo sich {\tt Point} befindet. Die erste verwendet einen kompletten Pfad zum Point:

java.awt.Point punkt = new java.awt.Point();
Jedesmal, wenn die Klasse Point verwendet wird, muss nun der komplette Pfad java.awt.Point genannt werden. Einfacher ist es da schon, wenn man Pfad importiert und dann nur noch die Klasse nennt.
import java.awt.*;
...
Point punkt = new Point();