Lädt...

Pakete in Java

Lege die Klasse Bell in einen Ordner namens kit mit der ersten Zeile package kit; und einer static-Methode ring(), die ding druckt. In Lobby.java neben diesem Ordner — nicht darin — rufe aus main kit.Bell.ring(); auf. Kompiliere vom Elternordner und starte java Lobby. Der Bildschirm soll eine Zeile zeigen: ding. Paketname und Ordnername passen zusammen. Der Aufruf mit kit.Bell davor ist der Lehrstoff dieser Seite. Lass das Wort import für die nächste Seite.

Ein Ordnername, den die Datei erklärt

Bisher lag jede Klasse in einem flachen Ordner. Ein Paket gruppiert Klassen unter einem Ordnernamen. Die erste Zeile der Datei muss diesen Namen sagen: package kit;. Die Datei Bell.java muss in einem Ordner namens kit liegen. Wenn Ordner und Paketzeile nicht übereinstimmen, beschwert sich javac.
Erstelle zuerst den Ordner kit. Darin erstelle Bell.java. Die erste Zeile ist package kit;. Dann ist die public-class-Zeile public class Bell. Lass keinen älteren Klassennamen Gate oder Tag hier. Schreibe eine static-Methode:
public static void ring() { System.out.println("ding"); }
Setze public auf die Methode, damit eine Klasse außerhalb des Pakets sie aufrufen kann. In Bell.java gibt es kein main. Speichere vor dem Kompilieren.

Bell in package kit

java
package kit;

public class Bell {
    public static void ring() {
        System.out.println("ding");
    }
}

Lobby ruft kit.Bell.ring auf

Erstelle Lobby.java im Elternordner — auf derselben Ebene wie der Ordner kit, nicht darin. Die public-class-Zeile ist public class Lobby. Innerhalb von main schreibe kit.Bell.ring();. Schreibe auf dieser Seite kein import kit.Bell;. Der volle Name kit.Bell reicht für den Aufruf.
Behalte Lobby als die Klasse, die main hält. Lege main für diese Lektion nicht in Bell. Wenn eine übrig gebliebene Pier-Datei von der Zugriffsseite noch in der Nähe liegt, starte für diese Lektion nicht java Pier — starte java Lobby, nachdem du vom Elternordner kompiliert hast.

Lobby calls kit.Bell.ring

java
public class Lobby {
    public static void main(String[] args) {
        kit.Bell.ring();
    }
}

Aus dem Elternordner, der sowohl Lobby.java als auch den Ordner kit hält, führe javac kit/Bell.java Lobby.java aus. Unter Windows kann der Schrägstrich in derselben Idee kit\Bell.java sein — zeige javac auf die Datei im Paketordner, dann auf Lobby.java. Wenn Klammern, geschweifte Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Dann starte java Lobby — nicht java Lobby.java und nicht java kit.Bell. Lass die Endung .java beim Startbefehl weg. Starte die Klasse, die main hält. Dieselben Befehle funktionieren unter Windows und macOS, sobald die Pfade zu deiner Shell passen.
Das Programm soll eine Zeile drucken und stoppen: ding. Es soll nicht auf Eingabe warten. Wenn das Terminal auf Tastatur wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in einer Datei. Lösche ihn und behalte kit.Bell.ring(); in Lobby, mit package kit; in Bell.
Geh den Lauf einmal durch. Java startet bei Lobby.main. Der Aufruf kit.Bell.ring() findet die Klasse Bell im Paket kit und führt die static-Methode aus. Der Rumpf druckt ding. Der Bildschirm zeigt ding. Nichts anderes soll drucken. Wenn du 9 oder ok siehst, läuft noch ein älteres Pier- oder Yard-Programm von einer früheren Seite.
Wenn Bell.java neben Lobby.java ohne Ordner kit liegt, während die Datei noch package kit; sagt, lehnt javac ab. Verschiebe die Datei nach kit. Wenn du von außerhalb des Pakets Bell.ring(); ohne kit. aufrufst, sieht javac auf dieser Seite den Kurznamen nicht — behalte kit.Bell.ring();. Der Paketname ist Teil des vollen Typnamens, bis die nächste Seite import lehrt.

Ordner und Paketzeile nebeneinander

Eine kurze Tabelle hält die Übereinstimmung klar.

📊 folder vs package line

Stück Auf dieser Seite
Ordnername kit
erste Zeile in Bell.java package kit;
Aufruf aus Lobby kit.Bell.ring();
import nicht auf dieser Seite — nächste Lektion
Die Tabelle ist nur eine Erinnerung. Die getippten Stücke, die du behältst, sind package kit; in der Bell-Datei, der Dateipfad unter kit und kit.Bell.ring(); in Lobby.

Vergleich mit Zugriff und mit einem flachen Ordner

Auf der Zugriffsseite teilten Gate und Pier einen Ordner mit einem private Feld. Das funktioniert weiterhin. Diese Seite fügt einen Paketordner und eine Paketzeile hinzu. Ein übrig gebliebenes Demo Gate g = new Gate(9); g.show(); ist eine andere Lektion. Für diese Seite behalte kit/Bell.java und Lobby.java und kit.Bell.ring();.
Du kannst flache Ordner weiter für winzige Demos nutzen. Diese Lektion wählt ein Paket, damit du den Namen vor der Klasse siehst. Mische auf dieser Seite in demselben Lobby-Demo nicht g.show() und kit.Bell.ring(). Ein klarer Pfad reicht: Paketzeile, passender Ordner, voller Aufruf aus Lobby.

Vom Elternordner kompilieren, nicht nur aus kit

Bleib im Elternordner, wenn du kompilierst und wenn du java Lobby startest. Wenn du mit cd nach kit wechselst und Lobby von dort ohne korrigierte Classpath-Geschichte starten willst, bricht der kurze Lektionspfad. Behalte den Elternordner als Arbeitsordner für diese Seite. Die .class-Datei für Bell soll nach einem guten Compile unter kit neben Bell.java erscheinen.
Wenn der Bildschirm 9 oder ok zeigt, läuft noch ein älteres Pier- oder Yard-Programm. Wechsle zu java Lobby. Wenn javac kit.Bell nicht findet, prüfe die Schreibweise des Ordnernamens und die Zeile package kit; Zeichen für Zeichen.

Was für import bleibt

Diese Seite tippt bei jedem Aufruf den vollen Namen kit.Bell. Eine spätere Seite — import — zeigt, wie import kit.Bell; dir den Kurznamen Bell in Lobby erlaubt. Bleib hier beim vollen Namen. Erfinde auf dieser Seite kein import, es sei denn, du kennst es schon; das Lehrziel ist der Paketordner und kit.Bell.ring();.
Wenn alte Gate.java- oder Pier.java-Dateien noch im Elternordner liegen, lass sie liegen oder lösche sie nur, wenn sie den Compile-Befehl verwirren. Starte java Lobby, nachdem du das Paketpaar aus dieser Lektion kompiliert hast.

Vor import

Du kannst Bell.java unter dem Ordner kit mit package kit; und public static void ring() legen, das ding druckt, und aus Lobby kit.Bell.ring(); ohne import aufrufen. Kompiliere vom Elternordner und starte java Lobby. Der Bildschirm zeigt ding. Der Paketname passte zum Ordner. Die nächste Seite ist import, wo nach einer import-Zeile der Kurzname reicht.
Behalte package kit; als erste Zeile in Bell. Behalte die Datei in kit. Behalte den Aufruf als kit.Bell.ring();. Diese drei Gewohnheiten sind der Kontrollpunkt dieser Seite, bevor du weitergehst. Wenn der Bildschirm vom Elternordner ding zeigt, erledigt das Paketlayout seine Aufgabe für diese Lektion.

🧠 Testen Sie Ihr Wissen

Bereit zum Start

Testen Sie Ihr Wissen

Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen

❓
6
Fragen
🎯
70%
Zum Bestehen
♾️
∞
Zeit
🔄
∞
Versuche

📝 Anweisungen

  • Lesen Sie jede Frage sorgfältig
  • Wählen Sie die beste Antwort für jede Frage
  • Sie können das Quiz so oft wiederholen, wie Sie möchten
  • Ihr Fortschritt wird oben angezeigt