我希望能夠將一個鸚鵡(或任何其他動物)對象傳遞給方法addAnimal(動物動物)。我知道我可以直接從構造函數中將動物添加到數組列表中,但稍後會添加其他動物,這些動物不會在構造函數中。因此,公共方法。如何傳遞一個子類作爲想要超類的方法的參數?
我該如何讓各種動物作爲參數傳遞?
**編輯修復構造函數和基本語法問題。問題依然存在。
class Zoo extends Animal{
private ArrayList<Animal> animals;
public Zoo {
Parrot parrot = new Parrot();
animals.addAnimal(parrot); // cannot find methodaddAnimal(parrot)
}
public void addAnimal(Animal animal) {
animals.add(animal);
}
}
class Animal {
// variables and methods
}
class Parrot extends Animal {
// variables and methods
}
你不能在類定義中寫'animals.addAnimal(parrot)'。這種指令需要在方法中。此外,你的'鸚鵡類'延伸'動物'而不是'動物'。 – khelwood
你問爲什麼這個代碼不能編譯?列表聲明後忘記了分號。你直接把代碼放在只能存在於方法中的類中。而ArrayList沒有addAnimal方法,只有一個add方法。即使所有這些都是固定的,它會在運行時失敗,因爲您的列表爲空。 –
對不起,我試圖將我的一小部分源代碼複製到這裏,但我沒有做得很好。我將編輯併爲Parrot添加適當的構造函數並修復一些語法問題。在我的實際代碼中沒有任何語法錯誤。 – KalebB