【问题标题】:Adding subclasses into a superclass array in Java在Java中将子类添加到超类数组中
【发布时间】:2015-03-08 21:53:24
【问题描述】:

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

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

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

【问题讨论】:

  • 请发帖cowwolfmammal。另外,请注意,按照约定,Java 类名以大写字母开头。
  • ...字段以小写字母开头并以驼峰形式继续;基本上与你所拥有的相反。
  • @JSobo 如果您需要更多解释,我可以为您解释:)

标签: java arrays arraylist subclass superclass


【解决方案1】:

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

对我来说,我可以使用这个

public abstract class Mammal{

  //Constructor
  //Getters and Setters
}

然后创建您将拥有的子类

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

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

这样我就可以在我的主类中创建一个数组列表,它可以保存两个对象而不会出现编译器错误

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 类是你不能实例化一个抽象类,但你可以实例化它的子类,子类可以从超类继承方法

希望这有帮助:)

【讨论】:

  • 感谢您向我展示了编写 Java 类名的正确常规方法!很抱歉没有发布其他课程,我的课程和你描述的完全一样。感谢您的帮助。
  • @JSobo:如果回答对你有用,别忘了接受回答,这将对未来的访问者有所帮助。
【解决方案2】:

如果不看其他课程很难分辨,但试试这个:

既然牛似乎很好,我猜你已经从牛类中扩展了哺乳动物......所以确保 狼扩展哺乳动物那个错误对我来说是“嘿,我不能在这个哺乳动物阵列中添加狼!狼甚至不是哺乳动物的一种……所以去看看它扩展了哺乳动物朋友”

【讨论】:

  • 我不敢相信我错过了那个愚蠢的错误。 Wolf 子类没有扩展 Mammal。感谢您指出我的菜鸟错误,也感谢您提醒我发布我的其他课程,以后会这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
  • 2018-03-05
  • 2017-08-30
  • 1970-01-01
相关资源
最近更新 更多