簡體   English   中英

如何將多個對象分配給另一個類/對象?

[英]How to assign multiple objects to another class/object?

我必須制作一個有三種動物(長頸鹿,老虎和企鵝)的動物園的程序,我必須制作一種方法,將動物分配到動物園(可以有多個動物園,所以它必須具體)和然后一種方法可以打印那個動物園里的所有動物。

如何將多個動物添加到動物園? 我可以將多個動物分配給一個動物園(您可以在其中打印動物的詳細信息,並顯示哪個動物園,但是我需要打印動物園的詳細信息,並使用以下方法顯示動物:

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;
    }
}

非常感謝!!

我會盡力提供幫助,但我懷疑我正確地理解了您。

首先,您需要一個抽象類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);
        }
}

我只希望我幫忙。

Zoo將需要包含List<Animal>List<Animal> ,而不僅僅是單個Animal

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM