Static
Das Schlüsselwort static dient in Java als Modifikator für Attribute und Methoden.
Statische Methoden werden nicht auf einem Objekt aufgerufen und besitzen daher keinen an ein Objekt gebundenen Kontext.
Eine statische Methode kann deshalb auch keine nicht-statischen Attribute der Klasse direkt ansprechen oder nicht-statische Methoden der Klasse direkt aufrufen. Hierzu wird immer eine Objektinstanz benötigt, die im statischen Kontext nicht vorliegt. Deswegen kann eine statische Methode nur andere statische Methoden aufrufen oder statische Attribute verändern.
Statische Attribute gelten, anders als nicht-statische Objektattribute, für die Klasse selbst. Daher hat jede Änderung direkten Einfluss auf den Wert eines statischen Attributes. Dies führt sehr schnell zu sogenannten Seiteneffekten, die den Zustand des Programmes nicht mehr nachvollziehbar ändern und das lokalisieren und beheben von Fehlern im Quellcode sehr schwierig machen. Aus diesem Grund wird häufig von statischen Attributen abgeraten.
Statische Methoden sollten daher sehr allgemeine Programme repräsentieren, die nicht abhängig von einem globalen Zustand sind. Funktionen wie der Sinus und Cosinus sind z.B. statische Methoden der Klasse Math
, welche für die Berechnung dieser Werte keine weiteren Informationen benötigt und es unnötig aufwändig wäre, ein Math
-Objekt zu erstellen um dieses die Sinus, bzw. Cosinus Berechnung durchführen zu lassen, nur um es danach nicht mehr zu benötigen.