In der strukturierten Programmierung spielen Prozeduren (in Java meist als Methoden bezeichnet) eine zentrale Rolle. Sie helfen dabei, Code-Duplikate zu vermeiden und wiederkehrende Abläufe in abgeschlossenen Einheiten zu kapseln. Dadurch steigt nicht nur die Übersichtlichkeit, sondern auch die Abstraktionsebene:
Als Entwickler müssen wir in der Regel nur wissen, dass eine Methode existiert und welchen Effekt sie hat – nicht jedoch, welche komplexen Details im Hintergrund ablaufen.
Ein einfaches Beispiel ist die Methode println des System.out-Objekts. Sie verbirgt die vielen internen Schritte, die notwendig sind, um Text auf dem Bildschirm auszugeben. Für uns reicht es, sie aufzurufen – der Rest geschieht automatisch.
Vorteile von Methoden
- Wiederverwendbarkeit: Einmal geschrieben, beliebig oft nutzbar.
- Abstraktion: Fokus auf das Was, nicht auf das Wie.
- Struktur: Der Code wird modularer und leichter wartbar.
- Komplexitätsreduktion: Methoden verbergen technische Details und erleichtern so das Denken über den Code.
Erste eigene Methoden
Die ersten eigenen Methoden hast du vermutlich schon kennengelernt: die main-Methode. Sie ist statisch, da sie keiner Objektinstanz zugeordnet ist, und dient als Einstiegspunkt jedes Java-Programms.
Im nächsten Schritt wirst du weitere statische Methoden implementieren, um deinen Code noch klarer zu strukturieren und wiederverwendbar zu machen.
Programm mit zwei statischen- neben der Main-Methode. Quelle: Technik-Kiste.de
Im gezeigten Java-Programm wird demonstriert, wie Methoden definiert und aufgerufen werden können, und wie Java mit überladenen Methoden umgeht.
1. Die Klasse
- Die Klasse heißt Funktion.
- Sie enthält zwei Methoden mit demselben Namen: sayHello.
2. Methodenüberladung
- Beide Methoden heißen gleich (sayHello), unterscheiden sich aber in ihrer Parameterliste:
- Erste Variante: erwartet einen String (name).
- Zweite Variante: erwartet zwei Strings (vorname, nachname).
- Dieses Konzept nennt man Methodenüberladung (method overloading).
- Der Compiler entscheidet beim Aufruf anhand der übergebenen Argumente, welche Variante ausgeführt wird.
3. Die main-Methode
- In main werden beide Varianten aufgerufen:
- sayHello("Frederik Stein"); → nutzt die erste Methode mit einem Parameter.
- sayHello("Frederik", "Stein"); → nutzt die zweite Methode mit zwei Parametern.
4. Ausgabe des Programms
Wenn du das Programm ausführst, erscheint auf der Konsole:
Hallo Frederik Stein!
Hallo Frederik Stein!
Beide Methoden liefern also eine Begrüßung, aber die zweite Variante trennt Vor- und Nachnamen explizit.
Statische Methode vs. Mathematische Funktionen
Eine statische Methode in Java ist nicht automatisch mit einer mathematischen Funktion gleichzusetzen. Der Grund: Sie kann beispielsweise auf statische Variablen zugreifen und deren Wert verändern. Damit hängt ihr Ergebnis nicht ausschließlich von den übergebenen Parametern ab.
Im Gegensatz dazu stehen die sogenannten „echten“ Funktionen. Diese haben den Vorteil, dass sie unabhängig vom restlichen Programmkontext verstanden werden können. Ihr Verhalten ist reproduzierbar, da sie bei gleichen Eingaben stets dieselben Ausgaben liefern.
Das macht sie:
- leichter verständlich,
- einfacher zu warten,
- besser zu modularisieren und
- zuverlässiger zu testen.
Kurz gesagt: Je stärker sich eine Methode wie eine „echte“ Funktion verhält, desto klarer und robuster wird der Code.
Rückgabe von Werten
Bei der Verwendung von Methoden wird oftmals mit einem Rückgabewert gerechnet. Hierfür darf nicht „void“ als Rückgabewert definiert sein. Vielmehr muss ein Datentyp definiert worden sein.
Ausschnitt aus einem Programm zur Berechnung einer Fakultät das auf die Rückgabe durch „return“ setzt. Quelle: Technik-Kiste.de
Das Schlüsselwort return beendet die Ausführung einer Methode und gibt – falls der Rückgabetyp nicht void ist – einen entsprechenden Wert zurück. Eine Methode kann an mehreren Stellen durch ein return verlassen werden. Besitzt sie einen Rückgabetyp ungleich void, so muss in jedem möglichen Ausführungspfad ein Wert dieses Typs zurückgegeben werden. Methoden mit dem Rückgabetyp void enden hingegen automatisch am Methodenende, ohne dass ein expliziter return-Befehl erforderlich ist.
