有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

继承Java中的一个方法是否可能有交替条件?

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

所有动物都有名字和体重,但我如何根据狗的皮带长度添加狗,或者添加一条带有布尔值的鲨鱼来表示它是否饿了。有没有可能用这样的一种方法做到这一点


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    您可以通过调用“instanceof”来检查实例的确切类。 例如:

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