我正在从同一个超类创建一个不同动物对象的数组,然后使用 for 循环我正在使用另一个类的方法检索每个动物的描述,但是当我将每个新动物分配给数组时,它会更改名称以及每个动物的类型到最后一个动物的类型。如何让它停止更改每只动物的参数?
这是我现在的代码:
我为每种类型的动物列出了构造函数,每种类型都有不同的描述。
Animal[] family = new Animal[5];
family[0] = new Dog("Wrex", "dog");
family[1] = new Wolf("Fenrir", "wolf");
family[2] = new Snake("Kaa","snake");
family[3] = new Snake("Nagini", "snake");
family[4] = new Chameleon("David", "chameleon");
for(int i = 0; i < 5; i++)
{
family[i].describe();
}
这是它打印出来的:
大卫是变色龙。
大卫吠叫。
大卫四足行走。
大卫从它的主人那里得到食物。
大卫通过咀嚼进食。
大卫是变色龙。
大卫嚎叫。
大卫四足行走。
大卫通过成群狩猎获得食物。
大卫通过咀嚼进食。
编辑
我的描述方法对于每个动物类都是不同的,但它们都遵循这种格式:
public void describe()
{
System.out.println(Chameleon.getName()+ " is a " +Chameleon.getType()+ ".");
makeSound();
move();
getFood();
eatFood();
}
编辑 2
这是每个类和子类的粗略概述
公共类动物{
private static String name;
private static String type;
public Animal(String name, String type)
{
Animal.name = name;
Animal.type = type;
}
public static String getName() {
return name;
}
public void setName(String name) {
Animal.name = name;
}
public static String getType() {
return type;
}
public void setType(String type) {
Animal.type = type;
}
公共类哺乳动物扩展动物{
public Mammal(String name, String type)
{
super(name, type);
}
}
爬行动物和哺乳动物一样
最后一个子类中的每一个看起来都像上面发布的 describe 方法
公共类变色龙扩展爬行动物{
public Chameleon(String name, String type)
{
super(name, type);
}