nehme an, ich habe eine Situation, wie:Erkundigung über Vererbung in Java
class Base{
public Base() {
System.out.println("Base");
}
}
class Derived extends Base{
public Derived(){
System.out.println("Devired");
}
}
class DeriDerived extends Derived{
public DeriDerived(){
System.out.println("DeriDevired");
}
}
Ich bin nicht so klar, wie die Vererbung arbeiten, zum Beispiel, wenn ich versuche: Derived b = new DeriDerived();
und DeriDerived b1 = new DeriDerived();
, sie beide die gleichen Ergebnisse erzeugt.
Für die zweite Situation: DeriDerived b1 = new DeriDerived();
Was verstehe ich (vielleicht richtig sein, vielleicht auch nicht ???), dass die DeriDerived seine übergeordnete Klasse aufrufen, die abgeleitet ist, und der Devired ruft wieder seine übergeordnete Klasse der ist Basis, so am Ende werden wir Ergebnis aussehen wie: Based/Devired/DeriDerived.
Aber für die erste Situation, die ich nicht verstehe, wie es das gleiche Ergebnis wie Basierend erhalten Werke/Devired/DeriDerived
jemand mir helfen, zu erklären?
Vielen Dank!
In beiden Beispielen rufen Sie den gleichen Konstruktor auf. Warum würde es andere Ergebnisse erzeugen? – dunni
Der Typ der Variablen, in der Sie das Konstruktorresultat (die Instanz) speichern, hat keinen Einfluss auf die Konstruktion. Es wird nur der Typ der Box und dann die verfügbaren Eigenschaften (Methode, Variable) definiert. Aber Sie erstellen immer noch den gleichen Typ von Objekt, ein 'DeriDerived' – AxelH
Mögliches Duplikat von [Java-Vererbung] (http://stackoverflow.com/questions/3506412/java-inheritance) – AxelH