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

Is it possible to have alternating conditions in a method in Java?

所以我想在 Java 中创建一个多态 classes 数组。这是一个动物数组,我想向数组中添加不同种类的动物。动物是超级class,不同种类的动物是子classes,我需要实现一种方法,根据属性将特定动物添加到数组中,但由于各种动物都有不同属性,我不知道该怎么做。 到目前为止,我有这个基本方法并且可以编译:

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.");
            }
}

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

  1. 每个 Crocodile 是一个 Animal
  2. Animal 已保证访问 Animal 方法和 public 字段。
  3. 您可以使用 animal instanceOf Crocodile
  4. 检查 Animal 是否是 Crocodile
  5. 如果是鳄鱼,你可以施放:Crocodile croco = (Crocodile)animal;.
  6. 您可以将 Crocodile 添加到 Animal[]List<Animal>,因为它是一个 Animal
  7. 每个对象都是一个 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 - a Lion - addAnimal(new Lion(...)); 等来调用它

您可以通过调用 'instanceof' 检查实例的确切 class。 例如:

if(animals[i] instanceof Dog) {
 //do something
}