我正在尝试填写一个数组列表。我有三节课。第一个类叫做Animals,它是一个抽象类。在那里,我为age和name设置了两个字段,并为当前动物的声音设置了一个抽象方法。我做了另外两个类,叫做狗和青蛙。对于我设置的每种动物的年龄,名字和动物的声音(对于狗BAU BAU…例如:D)。问题是我不能用集合中的每一个动物的信息来填充数组列表。我将在主题中复制此处的类。
public abstract class Animals {
public int age = 0;
public String name = null;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract String sound();
}`
public class Dog extends Animals {
public Dog(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String sound() {
return ("Bau Bau" + "Kucheto e na " + this.age + " godini. I se kazva " + this.name + ".");
}
}
public class Frog extends Animals {
public Frog(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String sound() {
return ("Kva Kva" + "Zajabate e na " + this.age + " godini. I se kazva " + this.name + ".");
}
}
public class Program {
public static void main(String[] args) {
ArrayList<Animals> animals = new ArrayList<>();
Dog dog = new Dog(12, "Kiro");
Frog frog = new Frog(44, "Nacho");
animals.add(dog.sound()); here is the error ????
}}
发布于 2015-03-13 08:55:25
您只需要输入动物的类型。只有动物的对象或动物的子类的对象才是动物的类型。狗的叫声不是动物。
例如,在将所有动物放入声音之后,您可以在ArrayList上循环,并对每个动物调用ArrayList方法。如果声音确实是在Animals类中定义的方法。
发布于 2015-03-13 08:56:15
dog是Dog类型的对象。狗是动物的一个子类。为了给动物添加狗,你应该调用animals.add( ArrayList )。这意味着您正在向ArrayList中添加一个方法。你在打电话给我
animals.add(dog.sound());dog.sound()是一种方法,不能添加到ArrayList中,因为只有对象会添加到ArrayLists中。
你应该打电话给:
animals.add(dog);发布于 2015-03-13 08:56:30
您正试图将一个String (来自Animals.sound()的返回值,在这里被Dog类覆盖)添加到只接受Animals的类型化ArrayList。相反,
animals.add(dog);https://stackoverflow.com/questions/29022971
复制相似问题