Liebe Leute,
dachte eigentlich, ich hätte die Vererbung verstanden, allerdings verstehe ich folgenden Code nicht:
Die Ausgabe der ersten Schleife ist: AAA, BBB, CCC.
Das meine ich noch zu verstehen, da mithilfe der getter-Methode auf die Variable "string" jeder einzelnen Klasse zugegriffen wird.
Die Ausgabe der zweiten Schleife ist: AAA, AAA, AAA.
Jetzt komme ich schon ins zweifeln: Er greift doch direkt auf die Variablen aus den einzelnen Klassen zu. Nach meinem Verständnis müsste er jetzt wieder AAA, BBB, CCC zeigen, denn die Variable wurde zwar von der Super-Klasse geerbt, aber doch bei Initialiserung des Arrays sofort mit einem Klassen-eigenen Wert überschrieben.
Zu den letzten beiden Ausgaben hätte ich natürlich auch noch Fragen, aber vielleicht könnte mich erstmal zu meinem aktuellen Problem erleuchten, dann würde ich vielleicht selbst drauf kommen.
Vielen Dank!
dachte eigentlich, ich hätte die Vererbung verstanden, allerdings verstehe ich folgenden Code nicht:
Java:
class A {
String string;
A(){ string = "AAA"; }
String getString(){ return string; }
void setString(String s){ string = s; }
}
Java:
class B extends A
{
String string;
B(){ string= "BBB"; }
String getString(){ return string; }
void setString(String s){ string = s; super.string = "auch " + s; }
}
Java:
class C extends A
{
String string;
C(){ string = "CCC"; }
String getString(){ return string; }
void setString(String s){ string = s; }
}
Java:
public class Test
{
public static void main(String [] args)
{
A[] a = {new A(), new B(), new C()};
for(int i = 0; i < a.length; i++) // (1)
{
System.out.println(a[i].getString());
}
for(int i = 0; i < a.length; i++) // (2)
{
System.out.println(a[i].string);
}
for(int i = 0; i < a.length; i++)
{
a[i].setString("neu");
}
for(int i = 0; i < a.length; i++) // (3)
{
System.out.println(a[i].getString());
}
for(int i = 0; i < a.length; i++) // (4)
{
System.out.println(a[i].string);
}
}
}
Die Ausgabe der ersten Schleife ist: AAA, BBB, CCC.
Das meine ich noch zu verstehen, da mithilfe der getter-Methode auf die Variable "string" jeder einzelnen Klasse zugegriffen wird.
Die Ausgabe der zweiten Schleife ist: AAA, AAA, AAA.
Jetzt komme ich schon ins zweifeln: Er greift doch direkt auf die Variablen aus den einzelnen Klassen zu. Nach meinem Verständnis müsste er jetzt wieder AAA, BBB, CCC zeigen, denn die Variable wurde zwar von der Super-Klasse geerbt, aber doch bei Initialiserung des Arrays sofort mit einem Klassen-eigenen Wert überschrieben.
Zu den letzten beiden Ausgaben hätte ich natürlich auch noch Fragen, aber vielleicht könnte mich erstmal zu meinem aktuellen Problem erleuchten, dann würde ich vielleicht selbst drauf kommen.
Vielen Dank!