如何将多个对象分配给另一个类/对象?
我必须制作一个有三种类型的动物(长颈鹿,老虎和企鹅)的动物园 我必须制定一种将动物分配给动物园的方法(可以有多个动物园,因此它必须是具体),然后可以打印该动物园中所有动物的方法。如何将多个对象分配给另一个类/对象?
如何将多个动物添加到动物园? 我可以分配多个动物动物园(在那里你可以打印动物的细节,它显示了动物园,但我需要打印动物园的细节,并用显示动物:
public class Animal extends Zoo {
private Zoo zoo;
public void setZoo(Zoo zoo){
this.zoo = zoo;
}
)
但我可以“T打印出所有的动物在动物园里,刚分配到动物园最近的动物
这是我想出了一个打印最近:
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);
}
}
我只是希望我帮助。
一个很好的例子!不能做得更好... –
是的,这真的很棒,我只是想找到一种方法使用没有List函数的ur方法,因为我没有了解它们,我应该坚持数组。 相当困难.. – QuackMan245
@ user1066035看到我更新的答案。 – nullpotent
Zoo
将需要由动物的List<Animal>
组成,而不仅仅是一个Animal
。
首先,最好把家庭作业标记为“家庭作业”。其次,将动物园作为动物不是动物园来扩展动物园是没有意义的。在你的第二个片段中,你只允许一只动物。你已经在这里使用'array'标签了,所以推测这是你正在寻找的提示。你的'Zoo'需要一个'Animal'数组,然后'addAnimal'方法需要将该动物添加到该数组中。 –
我该如何做到这一点,当我添加一个新的动物,它不会保存到相同的数组索引号? 我试着做一个static int number_of_animals; 然后在Animal构造函数中有这个'number_of_animals + = 1'。 但是当我使用引用数组中创建的数组中的数字时,我得到一个空指针 – QuackMan245