automatix1311
Mitglied
Hallo!
Ein Verständnisproblem...
Es gibt drei Klassen: MyClass, MySubClass und MyChildClass. Dabei ist MyClass die direkte Basisklasse für die anderen zwei:
D.h. alle drei Klassen haben das Attribut counter -- die Basisklasse von sich aus und die abgeleiteten erben es.
Was ich nicht verstehe, ist, warum beim Verändern des Wertes des Attributs counter einer (egal welcher von den drei) Klasse, sich auch die Werte der counter-Attribute der restlichen zwei Klassen ändern.
Danke.
Ein Verständnisproblem...
Es gibt drei Klassen: MyClass, MySubClass und MyChildClass. Dabei ist MyClass die direkte Basisklasse für die anderen zwei:
Code:
public class MyClass {
private static int counter;
public static void setCounter(int counter) {
MyClass.counter = counter;
}
public static int getCounter() {
return counter;
}
}
Code:
public class MySubClass extends MyClass {
}
Code:
public class MyChildClass extends MyClass {
}
Was ich nicht verstehe, ist, warum beim Verändern des Wertes des Attributs counter einer (egal welcher von den drei) Klasse, sich auch die Werte der counter-Attribute der restlichen zwei Klassen ändern.
Code:
public class Main {
public static void main (String[] args) {
MyClass myClass = new MyClass();
MySubClass mySub = new MySubClass();
MyChildClass myChild = new MyChildClass();
myClass.setCounter(123);
System.out.println("MyClass.counter = " + MyClass.getCounter());
System.out.println("MySubClass.counter = " + MySubClass.getCounter());
System.out.println("MyChildClass.counter = " + MyChildClass.getCounter());
MySubClass.setCounter(456);
System.out.println("MyClass.counter = " + MyClass.getCounter());
System.out.println("MySubClass.counter = " + MySubClass.getCounter());
System.out.println("MyChildClass.counter = " + MyChildClass.getCounter());
MyChildClass.setCounter(789);
System.out.println("MyClass.counter = " + MyClass.getCounter());
System.out.println("MySubClass.counter = " + MySubClass.getCounter());
System.out.println("MyChildClass.counter = " + MyChildClass.getCounter());
}
}
Kann jemand sagen, warum alle drei Attribute nicht dasgleiche, sondern dasselbe referenzieren?MyClass.counter = 123
MySubClass.counter = 123
MyChildClass.counter = 123
MyClass.counter = 456
MySubClass.counter = 456
MyChildClass.counter = 456
MyClass.counter = 789
MySubClass.counter = 789
MyChildClass.counter = 789
Danke.