**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
上个月关门了。
改进这个问题
嗨,我对java很陌生,有一些问题。我有一个问题,我不知道该怎么说,所以我试着举个例子。
首先假设我有三个类共享同一个包。首先假设我有以下抽象类:
public abstract class Animal {
protected String name;
protected String type;
public String getType() {
return this.type;
}
}
接下来的孩子们
public class Lion extends Animal {
public Animal (String name, String dietType) {
this.name = name;
this.type = dietType;
}
然后假设我有另一个类,它跟踪与lion和animal共享相同包的动物列表。这个类有一个方法可以将动物添加到它所拥有的arraylist中。问题是,当我试图在类中创建一个lion(这是一种动物)并将其添加到arraylist中时,它不会添加。
public class AnimalList {
private ArrayList<Animal> animalList = new ArrayList<Animal>();
public void addAnimal(Animal animal) {
Lion lion1 = new Lion("Simba", "Carnivore");
animalList.add(lion1);
}
}
如果我想在动物列表中添加一只狮子,我会怎么做?我要把狮子打成动物吗?但是狮子已经是动物了,不是吗?
1条答案
按热度按时间y53ybaqx1#
只有一个严重的问题会阻止代码语法正确和可运行。您在应用程序中错误地命名了构造函数
Lion
班级。该类的定义如下:另一个问题是意图。正如@nickolai所说,你可能不想在你的大脑中加入一种特定的动物
AnimalList
类,而不是添加Animal
你过去了,所以:为了完成这张照片,这里有一个
main
将执行代码的方法:这个代码基本上回答了您的问题。是的,a
Lion
已经是一个Animal
,因此不需要类型转换来传递Lion
进入addAnimal
方法,即使它接受Animal
作为参数。