T
ThomasKo
Gast
Hallo,
ich habe ein ein Verständnisproblem bzgl. der Vererbung von Attributen und Methoden in folgendem kleinen Beispiel:
AUSGABE:
1
Ausgabe Klasse B
###########################################################
Nun hoffe ich, dass ihr mir bei folgenden Fragen weiterhelfen könnt, mein Tutor an der FH konnte es nämlich leider auf die Schnelle nicht
Das Programm gibt korrekt "Ausgabe Klase B" aus, da die Methode ausgabe in der abgeleiteten Klasse überschrieben wird. Warum aber wird der Wert von attr aus der Oberklasse ausgegeben, obwohl die Variable auch überschrieben wird ? Ich habe eigentlich in der Vorlesung gelernt, dass Attributwerte überhaupt nicht vererbt werden sollten...
Wenn ich
A meinB = new B();
in
B meinB = new B();
ändere ist die Ausgabe für mich verständlicher, nämlich:
2
Ausgabe B
wie ich es eigentlich auch im eigentlichen Beispiel erwartet hatte. Da B von A abgeleitet ist sollte es doch eigentlich problemlos möglich sein ein Objekt von B in einer Variable vom Typ A zu speichern, oder nicht ?
Bin für Hilfe dankbar
MfG
Thomas
ich habe ein ein Verständnisproblem bzgl. der Vererbung von Attributen und Methoden in folgendem kleinen Beispiel:
Code:
class A
{
public int attr = 1;
public void ausgabe()
{
System.out.println("Ausgabe Klasse A");
}
}
class B extends A
{
public int attr = 2;
public void ausgabe()
{
System.out.println("Ausgabe Klasse B");
}
public static void main(String args[])
{
A meinB = new B();
System.out.println(meinB.attr);
meinB.ausgabe();
}
}
1
Ausgabe Klasse B
###########################################################
Nun hoffe ich, dass ihr mir bei folgenden Fragen weiterhelfen könnt, mein Tutor an der FH konnte es nämlich leider auf die Schnelle nicht
Das Programm gibt korrekt "Ausgabe Klase B" aus, da die Methode ausgabe in der abgeleiteten Klasse überschrieben wird. Warum aber wird der Wert von attr aus der Oberklasse ausgegeben, obwohl die Variable auch überschrieben wird ? Ich habe eigentlich in der Vorlesung gelernt, dass Attributwerte überhaupt nicht vererbt werden sollten...
Wenn ich
A meinB = new B();
in
B meinB = new B();
ändere ist die Ausgabe für mich verständlicher, nämlich:
2
Ausgabe B
wie ich es eigentlich auch im eigentlichen Beispiel erwartet hatte. Da B von A abgeleitet ist sollte es doch eigentlich problemlos möglich sein ein Objekt von B in einer Variable vom Typ A zu speichern, oder nicht ?
Bin für Hilfe dankbar
MfG
Thomas