我會盡力幫忙,但我懷疑我正確地理解了你。
首先,你需要一個抽象類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);
}
}
我只是希望我幫助。
首先,最好把家庭作業標記爲「家庭作業」。其次,將動物園作爲動物不是動物園來擴展動物園是沒有意義的。在你的第二個片段中,你只允許一隻動物。你已經在這裏使用'array'標籤了,所以推測這是你正在尋找的提示。你的'Zoo'需要一個'Animal'數組,然後'addAnimal'方法需要將該動物添加到該數組中。 –
我該如何做到這一點,當我添加一個新的動物,它不會保存到相同的數組索引號? 我試着做一個static int number_of_animals; 然後在Animal構造函數中有這個'number_of_animals + = 1'。 但是當我使用引用數組中創建的數組中的數字時,我得到一個空指針 – QuackMan245