【发布时间】:2017-06-02 00:45:50
【问题描述】:
所以我想在 Java 中创建一个多态类数组。这是一组动物,我想在数组中添加不同种类的动物。 Animal 是超类,不同种类的动物是子类,我需要实现一个方法,根据属性将特定动物添加到数组中,但由于各种动物具有不同的属性,我不知道如何去做。 到目前为止,我有这个基本方法并且可以编译:
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.");
}
}
所有动物都有名字和重量,但我如何添加一条狗,例如根据他的皮带长度或一条带有布尔值的鲨鱼,表示他是否饿了。有没有可能用这样的一种方法做到这一点?
【问题讨论】:
-
通常您会先创建动物并将其传递给
addAnimal(Animal a)(如addAnimal(new Giraffe("Shorty")))。 -
您应该将方法更改为
public void addAnimal(Animal animal),它将能够接收任何类型的动物(继承自Animal的类)。然后在调用方法之前创建动物。 -
您可以对超类使用抽象谓词方法,并在子类中使用不同的选择条件覆盖它。
-
Addanimal 然后可以使用重写的方法来决定是否添加子类的实例。
标签: java inheritance polymorphism subclass superclass