ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
1959
1959
EMPFEHLEN
-
26.10.08 21:56 #1
- Registriert seit
- Nov 2007
- Beiträge
- 26
Hallo!
Ein Verständnisproblem...
Es gibt drei Klassen: MyClass, MySubClass und MyChildClass. Dabei ist MyClass die direkte Basisklasse für die anderen zwei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
public class MyClass { private static int counter; public static void setCounter(int counter) { MyClass.counter = counter; } public static int getCounter() { return counter; } }Code :1 2 3
public class MySubClass extends MyClass { }D.h. alle drei Klassen haben das Attribut counter -- die Basisklasse von sich aus und die abgeleiteten erben es.Code :1 2 3
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
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.
-
26.10.08 22:29 #2
- Registriert seit
- Nov 2007
- Beiträge
- 26
Mein Fehler...
MyClass.counter = counter;
-
Hallo, ich muss ehrlich gestehen ich hab es noch nie gebraucht und mir noch nie Gedanken darüber gemacht, aber ich dachte immer dass ein private static Attribut in den Unterklassen das selbe ist und nicht das gleiche?
There are 10 kind of people, those who understand binary and those who don't.
-
29.10.08 18:22 #4
- Registriert seit
- Nov 2007
- Beiträge
- 26
Das weiß ich zwar nicht genau, aber dann müsste es doch bei der Definition des gleichnamigen Attributs in den abgeleiteten Klassen zu einem Namenskonflikt kommen, was nicht der Fall ist...
-
29.10.08 18:37 #5
Hi,
static-Attribute und Methoden sind immer aufrufbar, also auch ohne Instanz:
Wenn du diese Klasse nur vererben willst, und auf jeden Fall eine Instanz haben willst, dann lasse doch static einfach weg.Code java:1 2 3 4
de.test.MyClass.setCounter(wert); de.test.MyClass.getCounter; // Ausgabe = wert //Vergleiche mit: java.lang.Math.round(1.01) //Die Methode round() der Klasse Math kannst du ohne Instanz der Klasse Maths aufrufen, weil sie mit static deklariert wird
Ciao
DosCoderMan kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.
Sollte ich mal Mist labern weist mich bitte darauf hin.
Ich freue mich über ein Danke, wenn ich helfen konnte!
Ähnliche Themen
-
Statische Attribute in typedef struct
Von Jacal im Forum C/C++Antworten: 15Letzter Beitrag: 19.02.09, 18:27 -
Pfadangaben von Dateien und Zugriff darauf
Von Cortadillo im Forum Java GrundlagenAntworten: 11Letzter Beitrag: 16.10.08, 17:39 -
Zugriff auf statische Member über Instanz
Von Danielku15 im Forum .NET CaféAntworten: 4Letzter Beitrag: 18.10.07, 21:23 -
[VB.Net] Dynamisch erstellte Controls und der Zugriff darauf
Von Xervek im Forum .NET Windows FormsAntworten: 12Letzter Beitrag: 07.10.07, 09:25 -
Vererbung: Problem beim Zugriff auf Private Attribute
Von BugSeeker im Forum C/C++Antworten: 5Letzter Beitrag: 02.05.04, 21:02





Zitieren
Login





