Was bedeutet static bei Java?

4 Antworten

In Java ist alles ein Objekt, mal die primitiven Datentypen (int, double, char, ...) ausgeschlossen. Zudem Ist ein Objekt immer von einer bestimmten Klasse.

Jetzt ist es so, dass man ein neues Objekt einer Klasse mit "new" erstellt.

Eine Klasse dagegen wird syntaktisch als Kompilationseinheit erstellt, sobald man das Schlüsselwort "class" verwendet. Innerhalb der Klasse kann man dann Variablen definieren, die dann in jedem Objekt der Klasse auftauchen..

Da die Klasse selber aber ein Objekt ist, gibt es eventuell auch Attribute, die nicht an die Instanzen der Klasse gebunden sein sollen, sondern an die Klasse als Objekt. Genau für diese Attribute, die eben der Klasse zugeordnet werden sollen verwendet man das Schlüsselwort "static".

Statische Variablen und Funktionen existieren außerhalb von Klassenobjekten. Das heißt, eine statische Methode kann aufgerufen werden, ohne ein Objekt der Klasse zu erstellen:

public class Foo {
    public static void main() {
        foo();
    }

    static void foo() {}
}

In statischen Methoden kann this daher nicht verwendet werden. Dafür kannst du über den Klassennamen darauf zugreifen:

public class Bar {
    public static int BAR = 42;

    public static int bar() {
        return 1337;
    }
}


public class Foo {
    public static void main(String[] args) {
        System.out.println(Bar.BAR);
        System.out.println(Bar.bar());
    }
}

Dass eine variable oder methode auf die ganze Klasse bezogen ist und nicht auf eine einzige instanz diese Klasse.

Ganz einfach: Eine statische Variable gilt für eine Klasse und damit auch für alle Instanzen einer Klasse. Eine nicht-statische Variable gilt nur für eine Instanz einer Klasse.

Woher ich das weiß:Studium / Ausbildung – Studium der Informatik