這下面的代碼給出了輸出爲:當父類對象被分配了子類對象時會發生什麼?
Output:
Animal
Dog
Animal
我很困惑,爲什麼「a.type」輸出作爲「動物」連分配「A = B」之後。爲什麼這樣?
另一個觀察結果是我沒有在Dog類中聲明變量 - 「String type」。然後我得到的輸出:
Output:
Dog
Dog
Dog
我的代碼:
//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);
}
'' 「?當父類對象賦給子類的對象會發生什麼」 - *咳咳*,請理解你將一個子類對象分配給父類型***變量***。這可能看起來很挑剔,但它是一個重要的區別,並且涉及Java實現OOP和使用* reference *變量的核心。此外,父類型可能不是一個類,但可能是一個接口(「純」類型)。 –
您正在爲父類和子類添加一個類型字段。別。僅將它添加到父項。讓它受到保護,或給它吸氣劑和安裝劑。 –