首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用几个类中的信息填充ArrayList

用几个类中的信息填充ArrayList
EN

Stack Overflow用户
提问于 2015-03-13 08:46:06
回答 4查看 367关注 0票数 0

我正在尝试填写一个数组列表。我有三节课。第一个类叫做Animals,它是一个抽象类。在那里,我为age和name设置了两个字段,并为当前动物的声音设置了一个抽象方法。我做了另外两个类,叫做狗和青蛙。对于我设置的每种动物的年龄,名字和动物的声音(对于狗BAU BAU…例如:D)。问题是我不能用集合中的每一个动物的信息来填充数组列表。我将在主题中复制此处的类。

代码语言:javascript
复制
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 ????

}

}

EN

回答 4

Stack Overflow用户

发布于 2015-03-13 08:55:25

您只需要输入动物的类型。只有动物的对象或动物的子类的对象才是动物的类型。狗的叫声不是动物。

例如,在将所有动物放入声音之后,您可以在ArrayList上循环,并对每个动物调用ArrayList方法。如果声音确实是在Animals类中定义的方法。

票数 0
EN

Stack Overflow用户

发布于 2015-03-13 08:56:15

dog是Dog类型的对象。狗是动物的一个子类。为了给动物添加狗,你应该调用animals.add( ArrayList )。这意味着您正在向ArrayList中添加一个方法。你在打电话给我

代码语言:javascript
复制
 animals.add(dog.sound());

dog.sound()是一种方法,不能添加到ArrayList中,因为只有对象会添加到ArrayLists中。

你应该打电话给:

代码语言:javascript
复制
animals.add(dog);
票数 0
EN

Stack Overflow用户

发布于 2015-03-13 08:56:30

您正试图将一个String (来自Animals.sound()的返回值,在这里被Dog类覆盖)添加到只接受Animals的类型化ArrayList。相反,

代码语言:javascript
复制
animals.add(dog);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29022971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档