的實例例如,我有Animal類,Cat類(Bird,Dog,Fish ...),它擴展了Animal。現在我想宣佈寵物類,這也是動物類,我希望它可以用任何現有的動物來構建,例如貓。是否可以擴展類
所以我需要構造是這樣的:
class Pet extends Animal{
private String nickname;
private Animal kind;
Pet(Animal a, String nickname){
<...>;
this.nickname = nickname;
}
}
編輯: 我想是這樣的:
Cat cat = new Cat();
Animal pet = new Pet(cat, "Foo");
if (pet instanceof Pet){
if (pet.kind instanceof Cat){
Pet.sayMeow();
}
}
是不是意味着我只需要Animal()
(這是受保護的)構造函數< ...>?
問問自己:什麼是'寵物'應該通過'動物'做?你現在什麼都不做,這就是爲什麼這個問題不清楚(不清楚你傳遞'動物'的理由是什麼)。 – Tom
@Tom說了些什麼:關於你想達到什麼的更多信息會很好。目前,這聽起來像你可以使用'interface'的東西。 – domsson
如果你想說要採用現有的'Animal'實例並追溯**將該實例**轉換爲'Pet',則不能這樣做。你可以創建一個新的'Pet',它是從一個'Animal'實例初始化的,但它將是分開的。實例的類在創建時被鎖定。 (我們可以對[接口]有不同的視圖,有些代碼可能只知道它是'Animal',其他代碼可能知道它是'Cat',但*實例*在創建時具有特定的類集。 –