我已經看到了一些實例化新對象的引用,特別是在使用繼承時。創建左側和右側的類名不同的對象
Cat cat = new Animal();
但是,我不知道這個概念被稱爲什麼。所以,我無法閱讀它。
我有兩個問題。
- 這個概念叫什麼?
- 這怎麼可能,你可以用 保持/引用一個與它的原始類別不同的類型的對象?
我已經看到了一些實例化新對象的引用,特別是在使用繼承時。創建左側和右側的類名不同的對象
Cat cat = new Animal();
但是,我不知道這個概念被稱爲什麼。所以,我無法閱讀它。
我有兩個問題。
這裏玩的基本概念是繼承。一個很好的開始閱讀關於它是https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
你的例子相反—應該
Animal animal = new Cat();
這是因爲Cat
類將是一個特定類型的Animal
—擁有一切,使一個Animal
需要對象,加上一些額外的東西。
在代碼中,這將是這個樣子:
public class Test
{
public static class Animal
{
protected String sound;
public String getSound() { return sound; }
public Animal() { sound = ""; }
}
public static class Cat extends Animal
{
public Cat() { sound = "meow"; }
}
public static void main(String[] args) {
Animal animal = new Cat();
System.out.println(animal.getSound());
}
}
其結果將是
喵
因爲貓對象具有從父動物的getSound()
方法,但是使用它自己的構造函數創建並適當地設置了數據。
Cat
是一種Animal
,但反過來不一定是正確的。 因此,Animal
可以是Cat
,Dog
或其他,因爲貓和狗確實具有動物的特性。這也被稱爲泛化和專業化。 Animal
是廣義類別,但Cat
是Animal
的專用類別。互聯網上有很多可用的資源。查看並瞭解面向對象編程範例。祝你好運!