请考虑以下事项。 您有一个 Dog 类和一个 Cat 类,它们都扩展了 Animal 类。 如果您创建一个动物数组,例如。
Animal[] animals = new Animal[5];
在此数组中,每个元素都设置了 5 个随机猫和狗。
如果 Dog 类包含方法 bark()
而 Cat 类不包含,那么如何根据数组调用该方法?例如。
animals[3].bark();
我尝试转换该元素,我正在检查狗,但无济于事,例如。
(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
}
}
关于java - 从父类(super class)的数组调用子类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33840209/