Dieser folgende Code gibt die Ausgabe als:Was passiert, wenn dem Elternklassenobjekt ein Kindklassenobjekt zugewiesen wird?
Output:
Animal
Dog
Animal
Ich bin verwirrt, warum "a.type" Ausgänge als "Animal" auch nach der Abtretung "a = b". Wieso ist es so?
Eine weitere Beobachtung war, wenn ich Variable nicht deklarieren - "String-Typ" in Dog-Klasse. Dann bekomme ich die Ausgabe als:
Output:
Dog
Dog
Dog
Mein Code:
//Parent class
class Animal {
String type;
public Animal(){
this.type= "Animal";
}
}
//Child class
class Dog extends Animal {
String type;
public Dog(){
this.type ="Dog";
}
}
//Main Class To Test
class TestDog{
Animal a = new Animal();
Dog b = new Dog();
Animal c = new Dog();
a = b;
System.out.println(a.type);
System.out.println(b.type);
System.out.println(c.type);
}
' "Was passiert, wenn Eltern-Klasse-Objekt untergeordneten Klasse Objekt zugeordnet"' - * Ähem *, bitte Verstehen Sie, dass Sie einem Elterntyp *** Variable *** ein Kindklassenobjekt zuweisen. Dies mag wählerisch erscheinen, aber es ist eine wichtige Unterscheidung und bringt den Kern davon, wie Java OOPs implementiert und * Referenz * -Variablen verwendet. Auch der Elterntyp könnte nicht einmal eine Klasse sein, sondern könnte eine Schnittstelle (ein "reiner" Typ) sein. –
Sie fügen sowohl der Eltern- als auch der Kindklasse ein Typfeld hinzu. Nicht. Fügen Sie es nur dem Elternteil hinzu. Mach es geschützt oder gib es Getter und Setter. –