在Java中将子类添加到超类数组中

时间:2015-03-08 21:53:25

标签: java arrays arraylist subclass superclass

我想初始化几个子类并将它们全部放入超类哺乳动物的数组中。使用此代码我得到错误:找不到添加(狼)的合适方法。我不知道我做错了什么,感谢任何帮助。

class gameRunner{
   cow Cow = new cow();
   wolf Wolf = new wolf();
   ArrayList<mammal> mammalArray = new ArrayList<mammal>();

   public gameRunner(){
     mammalArray.add(Cow);
     mammalArray.add(Wolf);
   }
}

2 个答案:

答案 0 :(得分:5)

基本上要创建这些类,首先需要有一个哺乳动物类

对我来说,我正在使用这个

public abstract class Mammal{

  //Constructor
  //Getters and Setters
}

然后创建你将拥有的子类

public Cow extends Mammal{
  //Constructor
  //Getters and Setters
}

public Wolf extends Mammal{
  //Constructor
  //Getters and Setters
}

因此,在我的主类中,我可以创建一个arraylist,它可以保存两个对象而不会出现编译错误

class gameRunner{
   Cow cow = new Cow();
   Wolf wolf = new Wolf();
   ArrayList<Mammal> mammalArray = new ArrayList<Mammal>();

  public gameRunner(){
      mammalArray.add(cow);
      mammalArray.add(wolf);
   }
 }

为什么我有Mammal类是你不能实例化一个抽象类,但你可以实例化它的子类,子类可以继承超类中的方法

希望这有助于:)

答案 1 :(得分:1)

在没有看到其他课程的情况下很难说但是试试这个:

由于牛看起来很好,我猜你已经从奶牛类中扩展了哺乳动物...所以确保 狼延伸哺乳动物这个错误对我来说是& #34;嘿,我不能给这个哺乳动物阵列增加一只狼!狼甚至不是一种哺乳动物...所以去检查它是否延伸了哺乳动物朋友&#34;