如何将多个对象分配给另一个类/对象?

时间:2011-11-25 19:20:41

标签: java arrays class methods

我必须制作一个有三种动物(长颈鹿,老虎和企鹅)动物园的计划 我必须制作一种方法,将动物分配到动物园(可以有多个动物园,因此必须具体),然后是一种可以打印动物园中所有动物的方法。

如何在动物园中添加多种动物? 我可以将多只动物分配到一个动物园(在那里你可以打印动物的细节,它显示了哪个动物园,但我需要打印动物园的细节,它显示动物使用:

public class Animal extends Zoo {
    private Zoo zoo;
    public void setZoo(Zoo zoo){
        this.zoo = zoo;
    }
)

然后我无法打印动物园内的所有动物,只是分配给动物园的最新动物。

这是我提出的打印最新版本的内容:

public class Zoo {
    private Animal animal;
    public void addAnimal(Animal animal){
        this.animal = animal;
    }
}

非常感谢!!

2 个答案:

答案 0 :(得分:3)

我会尽力帮助,但我怀疑我是否正确理解你。

首先,你需要一个抽象类Animal;没有意义继承动物园(他们有什么共同点?),以及你的动物园类来容纳这3种动物。

它们中的所有三个都应该从一个抽象的动物身上继承下去,因为它们是动物,当处理这些具体动物中的3个时,它们变得更容易。

class Zoo {
    private Animal[] animals;
    private String zooName;
    private int zooSize;

    public String getName() {
        return zooName;
    }

    public Zoo(String name, int capacity) {
        zooSize = 0;
        animals = new Animal[capacity];
        this.zooName = name;
    }
    public void addAnimal(Animal an) {
        animals[zooSize] = an;
        zooSize++;
    }

    public String toString() {
        String tempStr = "In " + zooName + ", we keep these " + zooSize + " animals:\n";
        for(int i=0; i < zooSize; ++i) {
            tempStr += animals[i].getName() + "\n";
        }
        return tempStr;
    }
}

abstract class Animal {
    private Zoo zoo;
    private String name = "";

    public Animal(String name) {
        this.name = "Animal " + name;
    }

    public String getName() {
        return name;
    }

    public void setZoo(Zoo zoo)
    {
        this.zoo = zoo;
        this.zoo.addAnimal(this);
    }

    public String belongsWhere() {
        return  name + " belongs to " +
                zoo.getName() + " zoo";
    }
}

你知道,现在我们不关心什么类型的动物动物园,它只是一个动物,它有一个名字,它取决于它的具体(虎,长颈鹿,企鹅)。

class Giraffe extends Animal {

    public Giraffe(String surname) {
        super("Giraffe " + surname);
    }
}

class Tiger extends Animal {

    public Tiger(String surname) {
        super("Tiger " + surname);
    }
}

class Penguin extends Animal {

    public Penguin(String surname) {
        super("Penguin " + surname);
    }
}

并测试它......

public class Main {

        public static void main(String[] args) {
            Zoo z1 = new Zoo("Zoo1");
            Zoo z2 = new Zoo("Zoo2");

            Animal pen1 = new Penguin("Luke");
            Animal gir1 = new Giraffe("Duke");
            Animal pen2 = new Penguin("Fluke");
            Animal tig1 = new Tiger("Brooke");

            pen1.setZoo(z1);
            pen2.setZoo(z2);
            gir1.setZoo(z2);
            tig1.setZoo(z2);

            System.out.println(pen1.belongsWhere());
            System.out.println(tig1.belongsWhere());

            System.out.println(z1); System.out.println(z2);
        }
}

我只是希望我帮助过。

答案 1 :(得分:0)

Zoo需要包含List<Animal>个动物,而不仅仅是Animal个动物。