如何将子类作为需要超类的方法的参数传递?

时间:2016-11-24 22:16:48

标签: java oop inheritance arguments

我希望能够将Parrot(或任何其他动物)对象传递给方法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
}

2 个答案:

答案 0 :(得分:0)

您正在尝试调用ArrayList对象的addAnimal()方法,该方法不存在,而是需要调用addAnimal()类对象的Zoo,如图所示在下面的代码中注释:

class Zoo {

    private ArrayList<Animal> animals;

    //create a main method
    public static void main(String[] args) {

       Zoo zoo = new Zoo();//Create Zoo object
       Parrot parrot = new Parrot();
       zoo.addAnimal(parrot);//add parraot to list by calling addAnimal
    }

   public void addAnimal(Animal animal) {
     animals.add(animal);
   }
}

答案 1 :(得分:0)

import java.util.ArrayList;
import java.util.List;

class Zoo {
    private List<Animal> animals = new ArrayList<Animal>();
    public void addAnimal(Animal animal) {
        animals.add(animal);
    }

    public static void main(String... args){
        Zoo zoo = new Zoo();
        zoo.addAnimal(new Parrot());
    }
}

class Animal {
    // variables and methods
}

class Parrot extends Animal {
    // variables and methods
}