Klassen in Java

Klassen in Java

Klassen bilden in der objektorientierten Programmierung die Vorlage, aus der zur Laufzeit des Programms Objekte erzeugt werden. Klassen besitzen Klassen-Variablen, Klassen-Methoden, sowie einen oder mehrere Konstruktor(en).


Erklärung

Klassen sind dir im Rahmen von Java möglicherweise bereits ein Begriff. Jedes Java Programm, ob objektorientiert programmiert oder nicht, muss innerhalb einer Klasse implementiert werden. Bisher sahen deine Klassen möglicherweise oft so aus:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Jedes Java-Programm benötigt an mindestens einer Stelle im Programmablauf eine main-Methode. Diese wird üblicherweise in einer eigenen Java-Klasse implementiert, welche kein Objekt abbilden soll. Die Klasse JansWorld kann also bleiben und du kannst später in der darin enthaltenen main-Methode Objekte (Instanzen von deinen Klassen) erzeugen.

Klassendiagram für den Ablauf an einer Schule

Eine neue Java-Klasse definieren

Wenn du nun eine neue Java-Klasse erstellen möchtest, so kannst du dies durch Rechtsklick und NEW im src-Folder deiner Entwicklungsumgebung machen.

Wichtig: Der spätere Klassenname muss identisch zum Dateinamen sein! Wähle daher den Dateinamen genau so, wie auch später deine Klasse heißen soll.

Erstellst du nun die Klasse Person, so muss auch die Datei "Person" genannt werden. Wenn deine Entwicklungsumgebung die Grundstruktur der Klasse nicht für dich bereitstellt, so kannst du diese im Anschluss auch selbst erstellen.

Schreibe dazu public class Name und ersetze den Namen durch den Namen deiner Klasse. Im Anschluss folgen zwei geschweifte Klammern. Zwischen diese Klammern schreibst du später den Inhalt deiner Klasse. Beim Erstellen der Klasse Person sieht der Kopf der Klasse dann so aus:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Klassen-Attribute erstellen

Klassen-Attribute sind Variablen, welche später die Eigenschaften des Objektes speichern werden. Die Klassen-Attribute werden für gewöhnlich immer an den Anfang einer Klasse geschrieben. So verlierst du nicht den Überblick, welche Attribute definiert sind.

Klassen-Attribute sind, wie bereits erwähnt, Variablen. Diese Variablen werden meistens NICHT in dieser Definition initialisiert! Zwar kann den Variablen eine Art Standardwert gegeben werden, aber die Initialisierung geschieht immer später in einem der Konstruktoren.

Bei der Klasse Person könnten mögliche Klassen-Attribute der Name (engl. name), das Alter (engl. age), der Beruf (engl. jobtitle) und die Größe (engl. height) sein.

  • Name (Typ String)
  • Age (Typ int)
  • Jobtitle (Typ String)
  • Height (Typ double)

Mit den implementierten Klassen-Attributen sieht die Klasse Person nun so aus:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Klassen-Methoden definieren

Wie du bereits gelernt hast, speichern die Objekte später ihre Eigenschaften in den Klassen-Attributen. Damit jedoch diese Informationen nicht nur herumliegen, müssen auch verschiedene Methoden definiert werden. Hier unterscheiden sich grundlegend zwei Arten von Methoden: Konstruktoren und funktionale Objektmethoden.

Konstruktoren

Konstruktoren sind Methoden, welche nur einmalig beim Erstellen eines neuen Objektes aufgerufen werden. Jede Java-Klasse muss mindestens einen Konstruktor haben.

Es kann jedoch auch mehrere Konstruktoren geben. Falls dies der Fall ist, müssen sich die Konstruktoren durch die Anzahl und/oder Art ihrer Parameter unterscheiden.

Alle Konstruktoren haben jedoch eines gemeinsam: denselben Namen. Und dieser Name ist identisch zum Klassennamen!

Definierst du nicht explizit einen eigenen Konstruktor, so übernimmt dies Java für dich. Der Standard-Konstruktor für die Klasse Person sieht so aus:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Wie du siehst, ist darin nicht viel enthalten. Der Standard-Konstruktor enthält also keine Parameter (Informationen, die beim Erstellen des Objektes übergeben werden sollen) und initialisiert auch keine Klassen-Attribute! Wenn beides nicht benötigt ist, so musst du den Konstruktor nicht explizit definieren. Benötigst du jedoch auch nur eine von beiden Funktionalitäten, musst du zwingend deinen eigenen Konstruktor anlegen.

Für die Klasse Person sollen beispielsweise Parameter übergeben und die Klassen-Attribute damit initialisiert werden. Daher musst du den Konstruktor definieren:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Selbstreferenz THIS

THIS ist ein besonders wichtiges Schlüsselwort in Java. this ist dabei eine Selbstreferenz, welche immer genutzt wird, um innerhalb eines Objektes auf sich selbst zu verweisen.

Als Beispiel kommt im obigen Programmcode die Variable name zweimal vor: Einmal als Klassenattribut name und einmal als Übergabeparameter name. Um innerhalb einer Methode auf die Klassenvariable zu verweisen, wird this.name verwendet. Um den Übergabeparamter zu verwenden, wird nur name verwendet. Der Ausdruck this.name = name speichert also den Wert des Übergabeparamteres name im Klassenattribut name.

Allgemein gilt: Gibt es keine Elemente mit gleichen Namen, so kann auf this verzichtet werden.

Funktionale Objektmethoden

Durch den Konstruktor werden Parameter an das Objekt übergeben und die Klassen-Attribute werden initialisiert. Die funktionalen Objektmethoden setzen die Funktionalität der Objekte um.

Jan kann zum Beispiel seinen Geburtstag feiern. Wenn er das macht, dann wird er ein Jahr älter. Doch nicht nur Jan kann das, sondern jede Person wird am Geburtstag ein Jahr älter. Also ist celebrateBirthday() (Geburtstag feiern) eine funktionale Objektmethode, welche jedes Objekt der Klasse Person ausführen kann:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Objekte erzeugen

Die Klasse Person könnte natürlich noch mehrere Methoden enthalten. Für jetzt reicht es allerdings und die Klasse kann als fertig betrachtet werden.

Um Objekte vom Typ Person zu erzeugen, benötigst du wieder die Klasse JansWorld und die darin enthaltene main-Methode.

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Zuerst muss eine Variable vom Typ des Objektes erzeugt werden (hier Person). Diese Variable braucht auch einen Namen, hier Jan. Nach einem Gleichheitszeichen erfolgt die Erzeugung eines neuen Objektes durch new, gefolgt vom Typ des Objektes und zwei runden Klammern, welche die Übergabeparameter an den Konstruktor enthalten.

Für das Objekt Jan ist der Name klar. Das Alter sei 15 Jahre. Der Beruf von Jan ist Schüler und er ist 1.7m groß.

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Allgemeiner Aufbau einer Java Anweisung zum Erzeugen eines Objektes:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Wenn Jan nun seinen Geburstag feiert, kann die Methode celebrateBirthday() auf dem Objekt Jan aufgerufen werden:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Auf der Konsole wird dieser Text ausgegeben:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

We Need to Go Deeper - Fun Fact

Du magst Klassen? Dann gibt es eine gute Nachricht für dich. Es ist in Java nicht nur möglich eine Klasse pro .java Datei zu erstellen. Tatsächlich kannst du Klassen verschachteln, wie du möchtest.

Das heißt, du kannst eine Java-Klasse in einer Java-Klasse in einer Java-Klasse in einer Java-Klasse in einer Java-Klasse in einer Java-Klasse in einer Java-Klasse ... erstellen!

Wie sinnvoll das ist, bleibt aber dir überlassen. Verschachtelte Klassen werden in Java verwendet, um einen besonders engen Bezug zwischen der umschließenden (äußeren) Klassen und der umschlossenen (inneren) Klasse herzustellen. Dadurch werden zwei Klassen in einer .java Datei zusammengefasst und der besonders enge Zusammenhang auch programmiertechnisch abgebildet.

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!
No items found.

simpleclub ist am besten in der App.

Mit unserer App hast du immer und überall Zugriff auf: Lernvideos, Erklärungen mit interaktiven Animationen, Übungsaufgaben, Karteikarten, individuelle Lernpläne uvm.

Jetzt simpleclub Azubi holen!

Mit simpleclub Azubi bekommst du Vollzugang zur App: Wir bereiten dich in deiner Ausbildung optimal auf deine Prüfungen in der Berufsschule vor. Von Ausbilder*innen empfohlen.

Jetzt simpleclub Azubi holen