在Java中的方法中是否可以有交替条件?

时间:2017-01-17 19:58:15

标签: java inheritance polymorphism subclass superclass

所以我想在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.");
            }
}

所有动物都有一个名字和一个体重,但我如何根据他的皮带长度添加一只狗或一个布尔值的鲨鱼,说明他是否饿了。甚至可以用这样的方法做到这一点吗?

2 个答案:

答案 0 :(得分:3)

  1. 每个Crocodile都是Animal
  2. Animal保证可以访问Animal方法和公共字段。
  3. 您可以使用Animal
  4. 检查Crocodile是否为animal instanceOf Crocodile
  5. 如果是Crocodile,您可以投射:Crocodile croco = (Crocodile)animal;
  6. 您可以将Crocodile添加到Animal[]List<Animal>,因为它是Animal
  7. 每个对象都是instanceOf Object,因为所有类都扩展为Object
  8. 你的方法应该是:

    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
}