O
outside7
Gast
Hallo!
Ich lern grad wie Vererbung in Java funktioniert und bin dabei auf ein kleines Mißverständnis gestossen.
Eine Unterklasse erbt ja bekanntlich (falls so vorgesehen) alle Methoden und Daten von ihrer Oberklasse.
Wenn ich jetzt aber in einer Unterklasse eine Methode der Oberklasse überschreibe wird durch dynamische Bindung die neu implementierte Methode herangezogen.
Ist das bei Datenfledern auch so?
Ich hab nämlich mal ausprobiert und bin dabei auf ein widersprüchliches Ergebnis gekommen:
--> Dabei ergibt var.a den Wert 3 und nicht den in der Unterklasse neu definierten Wert 4.
Warum ist das so?
btw.:
Sind vererbende Klassen irgendwie static? Wie soll die erbende Klasse sonst wissen welchen Wert sie annimmt?[/code]
Ich lern grad wie Vererbung in Java funktioniert und bin dabei auf ein kleines Mißverständnis gestossen.
Eine Unterklasse erbt ja bekanntlich (falls so vorgesehen) alle Methoden und Daten von ihrer Oberklasse.
Wenn ich jetzt aber in einer Unterklasse eine Methode der Oberklasse überschreibe wird durch dynamische Bindung die neu implementierte Methode herangezogen.
Ist das bei Datenfledern auch so?
Ich hab nämlich mal ausprobiert und bin dabei auf ein widersprüchliches Ergebnis gekommen:
Code:
class Oberklasse
{
int a=3, b;
}
class Unterklasse extends Oberklasse
{
int a=4, c;
}
class Test
{
Oberklasse var = new Unterklasse();
System.out.println(var.a);
}
--> Dabei ergibt var.a den Wert 3 und nicht den in der Unterklasse neu definierten Wert 4.
Warum ist das so?
btw.:
Sind vererbende Klassen irgendwie static? Wie soll die erbende Klasse sonst wissen welchen Wert sie annimmt?[/code]