我有一个抽象的动物类和其他子类,如爬行类,这些子类被进一步继承。
我已创建阵列初始化动物,如下所示:在ArrayList中存储不同类的对象
public void initializeArray()
{
zooAnimal = new Animal[10]; // We will make 10 animals:
// Polymorphism allows us to assign an object of a subclass to an
// object reference to a superclass/ancestor.
zooAnimal[0] = new Kookaburra("Kelly",5); // A 5kg kookaburra
zooAnimal[1] = new Lizard("Lizzy",2,3); // A 2kg, 3-year-old lizard
zooAnimal[2] = new Crocodile("Colin", 200, 7); // a 7-yo 200kg croc.
zooAnimal[3] = new Rosella("Katie", 2, "Crimson"); // a 2-yo Crimson Rosella
zooAnimal[4] = new Rosella("Rosie", 4, "Green"); // a 4-yo Green Rosella
zooAnimal[5] = new Snake("Boris","Brown",15,3); // A Brown Snake, 15kg, 3 years
zooAnimal[7] = new Snake("Rita","Rattle",22,1); // A Rattle Snake, 22kg, 1 years
zooAnimal[6] = new Dolphin("Dolly", 142, 6); // A heavy, 6-yo dolphin.
zooAnimal[8] = new Kookaburra("Kenneth",4); // A 4kg kookaburra
zooAnimal[9] = new Rosella("Yippy", 1, "Yellow"); // a 1-yo Yellow Rosella
}
但我想改为使用阵列的ArrayList以实现相同。
这可以做什么?
我的动物类的子类是这样的:
动物类
public abstract class Animal
{
private int weight;
private int age;
private String name;
protected Animal(String name, int weight, int age)
{
this.name = name;
this.weight = weight;
this.age = age;
}
public final int getWeight() { return weight; }
public final int getAge() { return age; }
public final String getName() { return name; }
public abstract void makeNoise(); // Must be implemented by a subclass
/** Provides a default description of the animal.
* Sub-classes should override. */
public String toString()
{
return "Animal Object: [name=" + name + ", age=" + age + ", weight=" + weight + "]";
}
}
而且我有一个Bird
类(子类Animal
类的),一个Kookabura
类(子(Animal
),Reptile
类(Animal
类的子类)和Lizard
子类(Reptile
类的子类)等等!
'List zooList = new ArrayList()<>; zooList.add(new AnimalSubclss(...)';' –
非常感谢。只是后面的另一个问题,我可以使用这个ArrayList来像私人地图> placeMap = new HashMap <>();和placeMap(name,zoolist);类似的东西 –