[英]Calling a Method of a Subclass From an Array of the Superclass
考慮以下。 您有一個狗類和一個貓類,它們都擴展了動物類。 如果您創建一個動物類數組。
Animal[] animals = new Animal[5];
在此數組中,每個元素設置5個隨機的貓和狗。 如果Dog類包含bark()
方法,而Cat類不包含方法,則如何根據數組調用此方法? 例如。
animals[3].bark();
Iv'e試圖投射元素,我正在檢查一只狗,但無濟於事。
(Dog(animals[3])).bark();
選項1:使用instanceof
(不推薦):
if (animals[3] instanceof Dog) {
((Dog)animals[3]).bark();
}
選項2:使用抽象方法增強Animal
:
public abstract class Animal {
// other stuff here
public abstract void makeSound();
}
public class Dog extends Animal {
// other stuff here
@Override
public void makeSound() {
bark();
}
private void bark() {
// bark here
}
}
public class Cat extends Animal {
// other stuff here
@Override
public void makeSound() {
meow();
}
private void meow() {
// meow here
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.