Klassen definieren die Attribute und die Methoden ihrer Instanzen/Objekte. Neben "normalen" Attributen und Methoden gibt es in objektorientierten Programmiersprachen noch statische (englisch static) Attribute und Methoden. Um statische Methoden und Attribute aufzurufen, benötigt man keine Instanz der Klasse. Man kann sie direkt über den Klassennamen aufrufen. Dies macht dann Sinn, wenn man Eigenschaften oder Verhalten eines Programms nicht an ein Objekt koppeln möchte, sondern diese allgemeingültig definiert werden sollen.
Innerhalb von statischen Methoden können keine nicht statischen Attribute verwenden werden, da dies wieder eine Instanziierung eines Objektes der Klasse voraussetzen würde. Denn nicht statische Attribute existieren nur in Zusammenhang mit einem Objekt (siehe auch Beispiel unten)!
Aufruf von statische Attributen und Methoden
Klassenname.Variablenname
Klassenname.Methodenname + Eingabeparameter
Beispiel:
Math.PI
Math.sin(15.5)
Implementierung von statischen Attributen und Methoden
Sichtbarkeit + Schlüsselwort static + Datentyp + Attributname
Sichtbarkeit + Schlüsselwort static + Rückgabeparameter + Methodenname + Eingabeparameter
Beispiele:
public static double mehrwertsteuersatz=19;
public static double berechneBruttoBetrag(double preis){return mehrwertsteuersatz*preis/100}
public class Beispiel {
int nichtStatisch = 10; // Nicht-statisches Attribut
public static void main(String[] args) {
// Direkt auf 'nichtStatisch' zugreifen (NICHT ERLAUBT):
// System.out.println(nichtStatisch); // Compiler-Fehler!
// Objekt erstellen und auf 'nichtStatisch' zugreifen (ERLAUBT):
Beispiel objekt = new Beispiel();
System.out.println(objekt.nichtStatisch); // Funktioniert!
}
}