我从同一个超类创建一个不同动物对象的数组,然后使用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();
}
这是它打印出:
大卫是一个变色龙。
David barks。
大卫移动了四条腿。
大卫从它的主人那里得到食物。
大卫吃了咀嚼。
大卫是一个变色龙。
大卫豪尔斯。
大卫移动了四条腿。
大卫通过狩猎包装获取食物。
大卫吃了咀嚼。
编辑
我的描述方法是每一个动物类不同,但它们都遵循这样的格式:
public void describe()
{
System.out.println(Chameleon.getName()+ " is a " +Chameleon.getType()+ ".");
makeSound();
move();
getFood();
eatFood();
}
编辑2
下面是每个类的粗线条和子类
public class Animal {
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);
}
}
爬行动物是相同的哺乳动物
每个最后子类看起来像这样与上述
张贴的描述方法公共课变色龙延伸爬行动物{
public Chameleon(String name, String type)
{
super(name, type);
}
我们将不得不看看什么.describe()包含为了给你任何答案。而且,只要你对问题的描述是足够的,那么很长的输出列表就是不必要的。 –
我个人发现输出有助于理解问题,但2或3个项目而不是5个就足够了。 –
你可以显示'describe'方法吗? –