Skip to main content

Verwalte deine Java Klassen in packages

Es macht durchaus Sinn deine Java Klassen in verschiedenen Paketen zu organisieren.

Wieso?

Es sprechen mehrere Gründe dafür:

  • Du kannst doppelte Klassennamen verwenden
  • Du kannst deinen Code oder deine Klassen inhaltlich trennen
  • Du kannst Hierarchien abbilden.

Und genau um diese Dinge geht es in diesem Beitrag

Du hast zwei Möglichkeiten ein neues Java Package anzulegen.

Ein Blick auf die Eclipse Oberfläche.
Links im Package-Explorer siehst du lediglich ein sogenanntes default packages.
Dieses legt Eclipse automatisch an.

Eclipse default package

Wenn du jetzt mit einem Rechtsklick auf deinen Source-Ordner klickst, öffnet sich das Kontextmenü.
Eclipse package anlegen

Wähle den Befehl „New“ und dann „Package“.

Gib den Namen des Paketes ein und klicke auf Finish.


Eclipse-package-namen-vergeben

Der Name eines package unterliegt wieder einer bestehenden Namenskonvention.
Er sollte immer komplett klein geschrieben werden.

Dein packages ist jetzt angelegt und steht dir im Package-Explorer zu Verfügung.

Eclipse neues package

Du kannst jetzt eine bestehenden Java Klasse aufnehmen und diese ganz bequem verschieben.
Achte darauf, dass vor dem Klassenaufruf das Keyword public steht.

Public bedeutet, dass diese Java Klasse öffentlich zugänglich ist.
Was bedeutet das?

Die Klasse erlaubt anderen Klassen, Objekte von diesem Klassentyp zu erschaffen.

Public ist ein sogenannter Access Modifier.
Diese Modifizierer geben an, wie sichtbar oder wie zugänglich die Klassen sind.

Da das ganze Klassenkonstrukt ohne öffentliche Verfügbarkeit keinen Sinn ergibt, solltest du alle Klassen mit diesem Keyword versehen.

Ruf dir den Quellcode einer verschobenen Java Klasse einmal auf.

Code nachdem du deine Klasse ins neue package verschoben hast:

package objekteklassen;//Eclipse hat automatisch eine package Anweisung eingefügt
public class Tier{
int size=156;
}

Ganz oben, hat Eclipse voll automatisch eine package Anweisung vorgenommen.

Wichtig ist, dass eine package Anweisung immer als erstes im Code stehen muss.

Die Anweisung beginnt immer mit dem Keyword package.
Dann folgt der Name des package.
Und dann erfolgt, wie hinter jeder Anweisung, ein Semikolon.

Du sagst mit dieser Anweisung der Entwicklungsumgebung:
„In diesem Package findest du meine Klasse“
Und das muss die Entwicklungsumgebung (Eclipse) immer als erstes wissen.

Und über diese Anweisung kannst du ebenfalls packages erstellen lassen.

Schreibe einfach in einer zweiten Klasse die package Anweisung mit einem willkürlichen Namen.
Vergiss das Semikolon nicht.

Eclipse package quickfix

Ganz links findest du die Quickfix Funktion und Eclipse stellt dir diverse Alternativen vor.
Klick auf den Befehl „Move to package“ um ein neues Paket anzulegen.
Und den Rest macht Eclipse.

Deine Klasse befindet sich dann automatisch in einem neuen Package.

Java Klasse package

Versuch einmal in einem Klasse ein Objekt aus einem anderen Package zu erstellen.
Und dann greif einmal auf eine Instanzmethode zu.

Java klasse objekt erstellen-package

Du siehst, dass funktioniert jetzt nicht mehr so einfach.

Du musst jetzt Eclipse explizit anweisen, dass du auf diese Klasse (Menschklasse) zugreifen willst.

Und wie geht das?
Dafür gibt es verschiedene Wege.

So greifst du auf Java Klassen außerhalb des package zu.

Es gibt drei Möglichkeiten.

Möglichkeit eins:
Du importierst die Klasse.
Dazu schreibst du eine Importanweisung direkt zwischen die package-Anweisung und dem Klassenaufruf.

Importiere die entsprechende Javaklasse

package objekteklassen;
import menschobjekte.Mensch;//Zuerst den Paketnamen, dann den Klassennamen
public class Tier{
int size=156;
Mensch mathias = new Mensch();
}

Die Importanweisung besteht immer aus dem Keywort import.
Dann folgt der Klassenname, welcher importiert werden soll.
Die Anweisung wird, wie immer, durch das Semikolon beendet.

Und…

Du hast die Möglichkeit in einem package ein Unterpackage anzulegen.
Klicke mit einem Rechtsklick auf dein package und wähle den Befehl „New“ und dann „Package“.

Und dann fügst du hinter dem Namen des Eltern-package einen Punkt ein.
Dann folgt der Namen des Kind-package.


Java-klassen-subpackage-anlegen

Dann würde die Importanweisung so aussehen:
Eclipse-subpackage


import menschobjekte.sub.Human;//Zuerst den Paketnamen, dann den Klassennamen

Also zuerst das Elternpackage, dann der Punkt, dann der Name des Kindpackage und dann die Klasse.
Jetzt erkennst du sicherlich, dass dies mit einer Menge Schreibarbeit verbunden ist.
Gerade wenn du ein package hast, welchem drei oder mehr Hierarchiestufen übergeordnet sind.
(siehe Bild unten)

eclipse-mehrere-Unterpackages

Jetzt kannst du auch einen Platzhalter einsetzen.
Setze einfach den Namen des Package ein.
Setze danach den Punkt.
Und setze dann einen Stern, als Platzhalter ein.

Eclipse-platzhalter

Der Platzhalter bewirkt, dass du alle dazugehörigen Klassen importierst.

Das geht.
Aber es kann problematisch werden, wenn du Variablen mit gleichen Namen hast.

Und wenn du dann den Platzhalter nutzt, importierst du alle Klassen aus diesem package.
Dann greifst du auf einmal auf Variablen zu, welche sich namentlich nicht unterscheiden.

Wenn du dann ein Objekt erschaffst und auf bestimmte Variablen zugreifen möchtest, wird es kompliziert.

Es macht also durchaus Sinn, die import Anweisung in voller Länge zu schreiben.

Aber..

Um eine Java Klasse zu importieren, bietet dir Eclipse wiederum ein paar Features an.

Wenn du ein neues Objekt aus einer anderen Klasse erstellen möchtest.

Schreibe den Konstruktor zur Klasse.
Dann hast du die Fehlermeldung bzw. das Quickfix von Eclipse.

Klicke auf den Befehl „import Klassenname“ und Eclipse importiert dir die Klasse.


eclipse-import-package

Nicht schlecht oder?

Aber da geht noch mehr.

Du kannst deinen Code bis zum Ende schreiben.
Du lässt dich also nicht von den Anmerkungen am Rand stören.

Du weißt du musst noch diverse Klassen importieren.
Aber das machst du ganz zum Schluss.

Klicke die Tastenkombination Steuerung+Shift+O und alle Klassen werden von Eclipse automatisch importiert.

Cool oder?

Ganz zum Schluss lass mich noch zwei Dinge loswerden.

Das default package lässt nichts zu.

Du hast von außen kein Zugriff auf das Default package.

Angenommen
Du hast ein neues package erstellt.
In dieses packst du jetzt eine Klasse. In dieser Klasse möchtest du ein Objekt aus dem default package erstellen.
Das geht nicht.

Dir bleibt dann nur noch die Möglichkeit diese Klasse in ein „echtes package“ zu schieben.

Als letzte Information zum Thema möchte ich dir noch zeigen, wie du ein package umbenennst.
Markiere das package im Package-Explorer und klicke mit einem Rechtsklick um das Kontextmenü aufzurufen.

Wähle jetzt „Refactor“, dann „Rename“.
Im Fenster gibst du einen neuen Namen ein und klickst auf finish.

Eclipse aktualisiert dann nicht nur den Namen des packages, sondern auch alle Zugriffe, alle Importe.

Zusammenfassung:

  • Du hast die Möglichkeit deine Klassen in verschiedenen packages zu verwalten.
  • Du solltest immer die tatsächlichen Objektklassen von der Programmausführung trennen.
  • Falls deine Software verschiedene Module beinhaltet, kannst du auch hier trennen.
  • Ganz oben im Code muss immer die package Anweisung stehen.
  • Um auf Java Klassen außerhalb des package zugreifen zu können, müssen diese Klassen importiert werden.
  • Auf ein default-package hast du von außen keinen Zugriff.

Hast du noch Fragen oder Anmerkungen zu diesem Beitrag?
Na dann nutze doch jetzt das Feld unter diesem Beitrag und schreibe ein Kommentar.


Ähnliche Beiträge

Java Duales Zahlensystem – Binäre Zahlen in Java umwandeln

Java Dual System

Das duale Zahlensystem hat viele Bezeichnungen. Oft wird auch es Dualsystem oder Binärsystem genannt. Es besteht aber immer aus 2 Zahlen. Man verwendet oft die Zahlen 0 und 1. Es können aber auch sämtliche anderen Zahlenpaare sein. Zum Beispiel 7 und 175 sind für sich genommen, auch ein normales Zahlenpaar und somit ein Dualsystem. Mit […]

Der wichtige Unterschied zwischen Java Methoden

Java Methoden Unterschied

Jetzt machen wir Nägel mit Köpfen. Dieses Sprichwort stammt aus den Anfängen des Industriezeitalters. Denn früher wurden Nägel nicht industriell, sondern per Hand gefertigt. Und da kam es schon einmal vor, dass versehentlich Nägel ohne Kopf produziert wurden. Was blieb ist das Sprichwort „Nägel mit Köpfen“ Und dieses steht sinngemäß für eine schnelle, qualitativ hochwertige […]

So kannst du Java installieren

Java installieren

Bevor du loslegst und deine ersten Java Programme schreibst, benötigst du die entsprechende Arbeitsumgebung. Du solltest also Java installieren. Und diese Arbeitsumgebung beinhaltet dann Bibliotheken für die einzelnen Java-Standard-Klassen, Dateien um deine Programme auszuführen. Dateien um deine Programme zu packen, Logische Verzeichnisstrukturen

So unterstützen dich Java Vererbungstabellen beim Entwurf

Java Vererbungstabellen

Bei der Java Vererbung gibt es zwei Klassenarten bzw. -stufen. Die Superklassen, welche einen allgemeinen Typen darstellen Und die spezielleren Unterklassen, welche die Superklasse um bestimmte Funktionen erweitern. Jetzt ist dieses ganze „Der-erbt-von-dem-Konzept“ mitunter sehr schwierig darzustellen. Zum Beispiel in einem Werkzeugkoffer. In einem Werkzeugkoffer befinden sich sämtliche Werkzeuge, von Säge bis Bohrmaschine. Wie machst […]

Das Instanzieren von Java Klassen verhindern

Java Objekte Instanzieren verhindern

Die Instanzierung von Java Klassen verhindern. Was heißt das? Instanzen sind die Objekte einer Java Klasse. Und Instanzieren oder Instanzierung heißt nichts anderes, als Objekterstellung. Aber was soll das? Oder mal anders gefragt: Wieso sollte man verhindern, dass eine Java Klasse – Objekte erstellen kann? Schließlich sind doch Objekte der Sinn und Zweck jeder objektorientierten […]

Java Übung 24 – So kannst du Kommazahlen runden

Java Übung runden

In dieser Java Übung möchte ich mit dir Zahlen runden. Ich bitte dich deshalb: Erstelle eine Klasse „RundenUebung“. Lege dann eine statische Methode rundeZahl() an. Diese erwartet zwei Parameter. Parameter 1 ist die Kommazahl, welche gerundet werden soll. Als zweiten Parameter wird eine ganze Zahl übergeben, welche die Nachkommastelle – bis auf welche letztlich gerundet […]

So verwendest du in Java try und catch Blöcke

Java try und catch

Ich bereue lieber die Dinge, die ich getan habe – als die Dinge, welche ich gar nicht erst versucht habe. Ja ich würde mich als den typischen „try-and-error-Menschen“ bezeichnen. Was ich will, probiere ich einfach aus und schaue dann erst was passiert. So etwas wie Pläne kenne ich eigentlich nicht. Und wenn ich mal einen […]

So implementierst du Instanzmethoden in deine Java Klasse

Java Instanzmethoden

In einen der letzten Beiträge habe ich dir gezeigt, wie du eine Klasse anlegen kannst. Ich habe die Klasse „Mensch“ oder „Human“ angelegt und wir haben die erste Instanzvariable implementiert. Dein Code sollte jetzt so aussehen: public class Human { int size=156;//size in centimeter } In diesem Beitrag werde ich dir zeigen, wie du Java […]

Java Übung 17: Char-Zeichen mit For-Schleife

Java Übung Char Zeichen For Schleife

In dieser Java Übung werden wir uns die Zeichen des Character Datentypen näher anschauen. Die einzelnen Zeichen sollen auf der Konsole ausgegeben werden. Und wie? Das ganze sollst du mit einer For Schleife machen. Erstelle deshalb eine Klasse „CharZeichen“. In dieser Klasse implementierst du dann eine Klassenmethode, namens „gibZeichen“. Und im Methodenrumpf durchläuft eine For-Schleife […]

Java Strings landen im String Constant Pool

Java-Strings-Pool

Du kennst das. Es ist abends. Du sitzt gemütlich vor dem Fernseher. Das Smartphone bimmelt. Kein Anruf. Nein – Eine Nachricht. Du liest die Nachricht sofort und antwortest darauf. Minuten später bekommst du die nächste Nachricht. Und auch auf diese antwortest du. Im Laufe des Abends entsteht daraus eine nette kleine Konversation. Und eh du […]