我有一个陆地上动物的 ArrayList。所有动物都属于不同的类,它们扩展了一个名为 Animal
的抽象父类(super class)。它们都有eat
、walk
、sleep
等方法,但只有Bird
类有方法 fly
。
如何在 ArrayList 中的所有 Bird
对象上调用 fly
方法?
public class Land{
ArrayList<Animal> landAnimals = new ArrayList<Animal>();
Land(Bird bird, Bird bird2, Bird bird3, Cat cat, Mouse mouse, Dog dog, Dog dog2){
landAnimals.add(bird);
landAnimals.add(cat);
landAnimals.add(mouse);
landAnimals.add(bird2);
landAnimals.add(dog);
landAnimals.add(bird3);
landAnimals.add(dog2);
}
public void animalsWalk(){
int size=landAnimals.size();
for (int count=0; count<size; count++){
landAnimals.walk();
}
}
public void birdsFly(){
//How do I make birds in the arraylist fly?
}
}
最佳答案
首先,您需要迭代 landAnimals
的内容。您可以使用 standard for
loop 来做到这一点:
for(int i = 0; i < landAnimals.size(); i++) {
Animal animal = landAnimals.get(i);
// TODO
}
然后您需要确定每个特定的动物对象是否属于 Bird
类。你可以用 instanceof
做到这一点运营商。
for(int i = 0; i < landAnimals.size(); i++) {
Animal animal = landAnimals.get(i);
if(animal instanceof Bird) {
// TODO
}
}
然后你需要cast animal
转换为 Bird
类型,然后才能调用它的 fly
方法。完成后,您可以进行标准方法调用。
for(int i = 0; i < landAnimals.size(); i++) {
Animal animal = landAnimals.get(i);
if(animal instanceof Bird) {
((Bird) animal).fly();
}
}
关于java - 在数组列表中的各种对象上调用子方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43939764/