У меня есть абстрактный класс животных и другие подклассы, такие как рептилии, которые далее унаследованы.
Я создал массив для инициализации животного, как показано ниже:Хранение объектов разных классов внутри 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 вместо массива.
Как это можно сделать?
Мой класс животных и подклассы выглядеть следующим образом:
класс Animal
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
) и т.д. !!
'Список zooList = new ArrayList() <>; zooList.add (new AnimalSubclss (...) ';' –
Большое спасибо. Просто другой вопрос позже я могу использовать этот arraylist для hashmap, как private Map> placeMap = new HashMap <>(); и placeMap (имя, zoolist), что-то вроде этого –