我有一个抽象的动物类和其他子类,如爬行动物,它们是进一步遗传的 我创建了数组以初始化动物,如下所示:
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
class(Animal
类的子类)和Lizard
子类(Reptile
类的子类)等等!!
答案 0 :(得分:3)
您只需声明一个ArrayList<Animal>
,并使用add(Animal)
方法而不是赋值(polimorphism允许您这样做):
private ArrayList<Animal> zooAnimals;
public void initializeArray() {
// this 10 is optional, but it's good to specify it
// when you know the final length of your list in advance
zooAnimals = new ArrayList<>(10);
zooAnimals.add(new Kookaburra("Kelly", 5)); // A 5kg kookaburra
zooAnimals.add(new Lizard("Lizzy", 2, 3)); // A 2kg, 3-year-old lizard
zooAnimals.add(new Crocodile("Colin", 200, 7)); // a 7-yo 200kg croc.
zooAnimals.add(new Rosella("Katie", 2, "Crimson")); // a 2-yo Crimson Rosella
zooAnimals.add(new Rosella("Rosie", 4, "Green")); // a 4-yo Green Rosella
zooAnimals.add(new Snake("Boris", "Brown", 15, 3)); // A Brown Snake, 15kg, 3 years
zooAnimals.add(new Snake("Rita", "Rattle", 22, 1)); // A Rattle Snake, 22kg, 1 years
zooAnimals.add(new Dolphin("Dolly", 142, 6)); // A heavy, 6-yo dolphin.
zooAnimals.add(new Kookaburra("Kenneth", 4)); // A 4kg kookaburra
zooAnimals.add(new Rosella("Yippy", 1, "Yellow")); // a 1-yo Yellow Rosella
}
答案 1 :(得分:2)
你可以这样做:
public void initializeList() {
List<Animal> animals = new ArrayList<Animal>();
animals.add(new Kookaburra("Kelly",5));
animals.add(new Lizard("Lizzy",2,3));
animals.add(new Crocodile("Colin", 200, 7));
animals.add(new Rosella("Katie", 2, "Crimson"));
animals.add(new Rosella("Rosie", 4, "Green"));
animals.add(new Snake("Boris","Brown",15,3));
animals.add(new Snake("Rita","Rattle",22,1));
animals.add(new Dolphin("Dolly", 142, 6));
animals.add(new Kookaburra("Kenneth",4));
animals.add(new Rosella("Yippy", 1, "Yellow"));
}
答案 2 :(得分:0)
java API提供了用于存储和操作对象组的特殊类。一个这样的类是Arraylist
请注意,Arraylist类位于java.util.ArrayList
中像创建任何对象一样创建一个ArrayList。
import java.util.ArrayList;
//..
ArrayList ajay = new ArrayList();
下面
ArrayList - &gt;类
ajay - &gt;对象
您可以选择指定ArrayList将保留的对象的容量和类型:
ArrayList ajay<String> = new ArrayList<String>(10);
ArrayList提供了各种操作对象的方法。 add()方法将对象添加到列表中, remove()方法从列表中删除对象。
示例代码:
import java.util.ArrayList;
public class MyClass {
public static void main(String[ ] args) {
ArrayList<String> ajay = new ArrayList<String>();
ajay.add("Red");
ajay.add("Blue");
ajay.add("Green");
ajay.add("Orange");
ajay.remove("Green");
System.out.println(colors);
}
}
我建议你解决你的守则,
public void initializeList() {
List<Animal> animals = new ArrayList<Animal>();
animals.add(new Kookaburra("Kelly",5));
animals.add(new Lizard("Lizzy",2,3));
animals.add(new Crocodile("Colin", 200, 7));
animals.add(new Rosella("Katie", 2, "Crimson"));
animals.add(new Rosella("Rosie", 4, "Green"));
animals.add(new Snake("Boris","Brown",15,3));
animals.add(new Snake("Rita","Rattle",22,1));
animals.add(new Dolphin("Dolly", 142, 6));
animals.add(new Kookaburra("Kenneth",4));
animals.add(new Rosella("Hippy",1,"Yellow");
}
在您的代码中,动物是一个类,动物是一个类的对象..