Static

Static

Static bedeutet, dass die Variable keine Instanzvariable ist. Das heißt sie gehört nicht zu einem Objekt sondern zu der Klasse. Das heißt alle Objekte der Klasse teilen sich den selben Wert für die statische Instanzvariable. Im Gegensatz zu den Instanzvariablen, die an ein Objekt gebunden sind, existieren Klassenvariablen unabhängig von einem Objekt.

Main Klasse

Static main

Zeile 3: Es wird eine Instanzvariable erstellt.

Zeile 6: Es wird ein Objekt der mein Klasse static erstellt.

Zeile 7: Mittels des soeben erstellten Objektes, wird die Methode autoErstellen aufgerufen.

Zeile 10-12: Es wird eine nicht statische Methode benötigt. Daher wird eine neue Methode ohne static erstellt. Innerhalb der Methode werden mittels einer for-Schleife, nacheinander 10 Objekte vom Typ Auto erstellt. a ist dabei schon als Instanzvariable vom Typ Auto in der Klasse deklariert.

Zeile 14-15: Hier werden die beiden counter Variablen aus der Klasse Auto nach Beendigung der for-Schleife ausgegeben.

Klasse Auto

Static objekt

Zeile 1: Eine neue Klasse namens Auto wird erstellt.

Zeile 2: Es wird eine Integer Variable mit dem Wert 0 initialisiert. Diese wird als static deklariert. Durch das static wandelt sich nun die Variable, von einer Instanzvariable zu einer Klassenvariable.

Zeile 3: Es wird ganz normal eine Integer Variable mit dem Wert 0 initialisiert.

Zeile 5-7: Es wird ein Konstruktor erstellt, welcher beim Erstellen eines Objektes jeweils counter1 und counter2 um 1 erhöht.

Ergebnis

Die Ausgabe zeigt den Unterscheid zwischen einer statischen Variable und einer normalen. Durch static wandelt sich die Instanzvariable (Objektvariable) zu einer Klassen Variable. counter1 wird somit durch jedes erstellen eines Objektes Auto um 1 erhöht und behält den erhöhten Wert. counter2 hingegen gehört immer zum erstellten Objekt. Dadurch erhält jedes neu erstellte Objekt Auto counter2 mit dem Wert von 0. Es wird zwar um 1 erhöht aber dies gilt nur für dieses eine Objekt.