In diesem Blogartikel werden wir uns in Java mit Methoden in Klassen beschäftigen. Dabei werden wir uns im ersten Schritt in der Theorie ansehen, wie man eine Methode innerhalb einer Klasse definiert und das Ganze anschließend in der Praxis umsetzen. Im zweiten Schritt werde ich dir zeigen, wie wir Methoden, die wir zuvor in einer Klasse definiert haben, aufrufen können.
Inhaltsverzeichnis
1. Wie definiert man eine Methode in einer Klasse?
Vorab solltest du verstehen, dass jede Methode in einer Klasse definiert wird. Innerhalb dieser Tutorial-Reihe haben wir uns bereits mit der Definition von Methoden vertraut gemacht, allerdings noch nicht im Kontext mit Klassen.
Dabei haben wir die Methoden durch den Einsatz des Schlüsselwortes static bisher immer statisch programmiert. Ein Beispiel einer statischen Methode kannst du auf der folgenden Abbildung erkennen:
Wir sehen auf dem Bild die Klasse Program, in welcher zwei Methoden definiert sind. Zum einen die statische Main-Methode, bei der es sich um die Haupt-Methode unseres Programms handelt und zum anderen die Methode „multiply“ darunter. Letztere soll zwei übergebene Zahlen miteinander multiplizieren und anschließend das Ergebnis zurückgeben.
In der Main-Methode fangen wir das Ergebnis in einer Variable auf und geben es dann auf der Konsole aus. Wie bereits erwähnt, sind diese Methoden statisch. Statisch deshalb, weil als Schlüsselwort static angegeben ist.
2. Was bedeutet static?
Das Wort „static“ sagt aus, dass die Methode statisch ist, was wiederum bedeutet, dass sie nicht an ein Objekt einer Klasse gebunden ist.
Das heißt, dass wir die Methode definieren und anschließend aufrufen können, ohne zuvor ein Objekt von dieser Klasse instanziiert zu haben.
Um es noch einmal zu verdeutlichen: Wir definieren die Methode und können sie einfach aufrufen, obwohl wir noch kein Objekt, in diesem Fall von der Klasse Program, erzeugt haben und das Ganze funktioniert trotzdem.
Die Entwicklungsumgebung zeigt uns auch bereits an, dass die Methode statisch ist, indem sie deren Namen beim Methodenaufruf kursiv schreibt, bevor die Parameter folgen:
Das deutet immer an, dass es sich um eine statische Methode handelt und man letztendlich kein Objekt von einer Klasse benötigt, um die Methode aufrufen zu können.
Jetzt fragst du dich womöglich:
3. In welchem Fall müssen wir ein Objekt erzeugen?
Wir brauchen ein Objekt genau im anderen Fall, nämlich dann, wenn wir eine normale Methode innerhalb einer Klasse definieren. Das werden wir uns in diesem Beitrag mal genauer ansehen.
Auf der folgenden Abbildung siehst du das vorherige Beispiel, in welchem wir eine Klasse namens Car definiert haben. Für diese haben wir bereits Attribute und eine Methode erstellt und anschließend eine Instanz davon erzeugt.
Unter dem Kommentar „//Methoden“ sehen wir bereits eine definierte Methode.
Dabei sehen wir zunächst das Schlüsselwort public, welches den Sichtbarkeitsmodifizierer darstellt. Auf diesen werden wir im nächsten Beitrag ausführlich eingehen.
Danach folgt der Rückgabetyp void und der Methodenname drive. Was bei dieser Methode auffällt: Das Schlüsselwort static fehlt. Da wir static nicht angegeben haben, handelt es sich hierbei um keine statische Methode.
Wie du siehst, ist das Definieren von Methoden in einer Klasse ganz einfach. Wir lassen static weg und schreiben dann den entsprechenden Code. Außerdem ist es bei den Methoden der Klasse Car wichtig, dass sie Funktionalitäten bereitstellen, die zur Klasse Auto passen.
Die Methode drive hat in der Klasse Car ihre Daseinsberechtigung, da schließlich jedes Auto fahren kann.
Eine Methode wie hausBauen() sollten wir darin allerdings nicht definieren, da sie offensichtlich nichts mit der Klasse Car zu tun hat, sondern eher in einer Klasse angebracht wäre, die ein Haus darstellt.
Wichtig:
In einer Klasse sollte nur das gekapselt werden, was relevant für diese und deren Objekte ist. Im Fall unseres Beispiels sind das also nur die Methoden, die auch wirklich etwas mit Autos zu tun haben.
4. Methoden aufrufen
Nun werden wir diese Methode aufrufen. Wir haben uns hierzu bereits ein Objekt von der Klasse Car erstellt. Da es sich bei drive um eine normale Methode handelt, die sich auf die Klasse Car bezieht, können wir diese nur aufrufen, wenn schon eine Instanz dieser Klasse existiert.
Mit car1 haben wir bereits eine Instanz und können demnach die Methode folgendermaßen aufrufen:
Wir geben also erst den Bezeichner car1 an, setzen einen Punkt und können anschließend die drive-Methode auswählen, die wir definiert haben:
Die Methode können wir entweder in der Liste auswählen oder einfach selbst ausschreiben. Wenn wir das Programm nun speichern und ausführen, sehen wir, dass die Methode ausgegeben wird:
5. Zusammenfassung
Zusammengefasst haben wir die Möglichkeit, in Klassen Methoden zu definieren, die sich auf den Zweck einer Klasse beziehen. Im Fall unseres Beispiels, in welchem wir es mit einer Auto-Klasse zu tun haben, also auf den Zweck von Car.
Da ein Auto fahren kann, ergibt die drive-Methode in der Klasse Car durchaus Sinn.
Wir lassen bei dieser Methode das Schlüsselwort static weg, weil sie sich auf einzelne Objekte der Klasse bezieht. Schließlich kann jedes Objekt für sich fahren.
Anschließend rufen wir die Methode auf, indem wir ein Objekt der Klasse erstellen, wie etwa car1 und setzen den Punktoperator gefolgt vom Namen der Methode, die wir aufrufen möchten.