所以我想在Java中创建一个多态类数组。这是一系列动物,我想在阵列中添加不同种类的动物。动物是超级类,不同种类的动物是子类,我需要实现一种方法,根据属性将特定动物添加到数组中,但由于各种动物都有不同的属性,我不知道如何去做。 到目前为止,我有这个基本方法并编译:
public void addAnimal(String name, double weight) {
if ((numberanimals < animals.length) && (numberanimals == 0)) {
animals[0] = new Animal(name, weight);
numberanimals += 1;
} else if (numberanimals < animals.length) {
animals[numberanimals] = new Animal(name, weight);
numberanimals += 1;
} else {
System.out.println("Zoo is full.");
}
}
所有动物都有一个名字和一个体重,但我如何根据他的皮带长度添加一只狗或一个布尔值的鲨鱼,说明他是否饿了。甚至可以用这样的方法做到这一点吗?
答案 0 :(得分:3)
Crocodile
都是Animal
。Animal
保证可以访问Animal
方法和公共字段。Animal
Crocodile
是否为animal instanceOf Crocodile
Crocodile croco = (Crocodile)animal;
。Crocodile
添加到Animal[]
或List<Animal>
,因为它是Animal
。instanceOf Object
,因为所有类都扩展为Object
。你的方法应该是:
public void addAnimal(Animal a){
if ((numberanimals < animals.length) && (numberanimals == 0)) {
animals[0] = a;
numberanimals += 1;
} else if (numberanimals < animals.length) {
animals[numberanimals] = a;
numberanimals += 1;
} else {
System.out.println("Zoo is full.");
}
}
}
然后您可以使用任何Animal
- Lion
- addAnimal(new Lion(...));
等来调用它。
答案 1 :(得分:2)
您可以通过调用'instanceof'来检查实例的确切类。 例如:
if(animals[i] instanceof Dog) {
//do something
}