Wert statischer Variablen bei erneutem Konstruktoraufruf?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Wert statischer Variablen bei erneutem Konstruktoraufruf?
Hallo :slight_smile:

Entschuldigt die komplizierte Ausdrucksweise im Betreff, hier nochmal etwas verständlicher (angelehnt an WS08 Aufgabe 3):

abstract class A{
    String y = "AA";
}

class B extends A {
    static String x = "BA";
}

public class Test{
     public static void main(String args[]){
        B b = new B();
        
        b.x = "CC";
        b.y = "CD";
        b = new B();

       Syso(b.x);
       Syso(b.y);

→ Ausgegeben wird für b.x “CC” und für b.y “AA”

Ist das der Fall da b.x statisch ist und auf “CC” gesetzt wurde/ Wenn ich eine statische Variable ändere und danach ein komplett neues Objekt erstelle, hat die Variable dann den neuen Wert, oder den Wert der in ihrer Klasse als erstes definiert wurde?

Liebe Grüße
Speedy


Genau, static Variablen sind für alle Instanzen eines Objekts gleich.


b.x = "CC";

wirft eigentlich auch eine Compiler-Warnung. Es macht semantisch auch gar keinen Sinn, auf x von innerhalb einer Instanz zuzugreifen – eben weil x statisch ist.

Ich frage mich gerade, wie sinnvoll es ist, nicht warnungsfreien Code als Aufgabe in einer Klausur zu stellen.

1 „Gefällt mir“

Vielen Dank an euch beide :slight_smile: