Was ist eine statische Methode?
Unter einer statischen Methode versteht man in Java eine zu einer Klasse und nicht zu einer Instanz einer Klasse gehörende Methode.
Die Methode ist für jede Instanz einer Klasse zugänglich. Die in einer Instanz definierten Methoden können jedoch nur von dem Objekt einer Klasse aufgerufen werden.
Eine statische Methode gehört nicht zu den Objekten, die sie erzeugt, sondern ist Teil einer Klassendefinition.
Im Gegensatz zu Instanzmethoden wird eine statische Methode durch den Klassennamen referenziert und kann aufgerufen werden, ohne ein Objekt der Klasse zu erzeugen.
Einfacher ausgedrückt handelt es sich um Methoden, die auch dann existieren, wenn noch kein Objekt konstruiert wurde, und die kein Aufrufobjekt erfordern.
Statische Methode einfach erklärt
Mit Java können Entwickler statische Methoden definieren, die auch für jede Instanz einer Klasse verfügbar sind.
In einer Instanz einer Klasse haben statische Methoden keinen Zugriff auf Variablen in einer Instanz und auf solche, die zu einer Klasse gehören.
Sie können nur auf statische Felder zugreifen und müssen eine Objektreferenz verwenden.
Häufige Anwendung für statische Methoden
Am häufigsten kommen statische Methoden beim Zugriff auf statische Variablen zum Einsatz.
Der Zugriff auf sie erfolgt über den Klassennamen und einen Punkt (.), gefolgt vom Namen einer Methode. Bei der Definition einer Methode werden sie mit dem Schlüsselwort „static” deklariert.
Auf statische Methoden kann ohne die Erstellung eines neuen Objekts zugegriffen werden. Eine statische Methode kann nur andere statische Methoden oder statische Datenelemente verwenden und aufrufen.
Üblicherweise kommen sie zum Einsatz, um mit Input-Argumenten zu arbeiten (die immer akzeptiert werden können), Berechnungen durchzuführen und einen Wert zurückzugeben.
Statische Methoden sind oft Utility-Methoden
Statische Methoden sind häufig Hilfsmethoden in System-, Wrapper- und Collections-Klassen, die aufgrund ihrer größeren Effizienz genutzt werden.
So können sie von verschiedenen Klassen ohne Erstellung einer Instanz verwendet werden, was in manchen Fällen entscheidend sein kann.
Methoden werden als statisch angelegt, wenn der Objektzustand keinen Einfluss auf ihr Verhalten hat, weil sie nur von ihren eigenen Parametern abhängen.
Java 8-Schnittstellen
In Java 8 und nachfolgenden Versionen können statische Methoden auch in Schnittstellen definiert werden.
Zur Vermeidung von Fehlern können Implementierungsklassen keine statischen Methoden von Schnittstellen überschreiben.
Statische Methoden werden meist in folgenden Fällen bevorzugt:
- Alle Instanzmethoden sollten einen bestimmten Teil des Codes gemeinsam haben (obwohl man auch dafür eine Instanzmethode haben könnte).
- Es soll eine Methode aufgerufen werden, ohne dass eine Instanz dieser Klasse erstellt werden muss.
- Es ist darauf zu achten, dass die Utility-Klasse nie geändert wird.
- Die Definition einer Methode soll nicht außer Kraft gesetzt werden.
- Es werden keine Instanzvariable in der Methode verwendet, und der Code ist nicht von der Instanzerstellung abhängig.