📜  具有抽象类java的多态数组(1)

📅  最后修改于: 2023-12-03 15:36:47.693000             🧑  作者: Mango

具有抽象类Java的多态数组

在Java中,抽象类是一种不能被实例化的类,只有它的子类可以被实例化。Java的多态性允许子类对象被赋值给父类引用变量,从而实现了多态数组。本文将介绍具有抽象类Java的多态数组。

抽象类

抽象类是一种不能被实例化的类,只有它的子类可以被实例化。抽象类通常用于封装类的通用行为,让子类根据自己的需要实现这些行为。

定义抽象类:

public abstract class Animal {
    public abstract void sound();
}
多态数组

Java的多态性允许子类对象被赋值给父类引用变量,从而实现了多态数组。多态数组可以容纳任何子类实例,而不必知道它具体是哪个子类实例。这种灵活性使得多态数组成为一种非常有用的编程技术。

定义多态数组:

Animal[] animals = new Animal[2];
animals[0] = new Cat();
animals[1] = new Dog();

以上代码创建了一个长度为2的Animal数组,其中包含一个Cat实例和一个Dog实例。由于Cat和Dog类都是Animal类的子类,因此它们可以被赋值给Animal类型的变量。

示例

下面我们来看一个实际的例子,使用抽象类Java的多态数组来模拟一个动物园:

public class Zoo {
    private Animal[] animals;

    public Zoo(int size) {
        animals = new Animal[size];
    }

    public void addAnimal(Animal animal) {
        for (int i = 0; i < animals.length; i++) {
            if (animals[i] == null) {
                animals[i] = animal;
                break;
            }
        }
    }

    public void makeSound() {
        for (int i = 0; i < animals.length; i++) {
            if (animals[i] != null) {
                animals[i].sound();
            }
        }
    }

    public static void main(String[] args) {
        Zoo zoo = new Zoo(3);

        zoo.addAnimal(new Cat());
        zoo.addAnimal(new Dog());
        zoo.addAnimal(new Cow());

        zoo.makeSound();
    }
}

以上代码演示了如何使用Animal类型的数组来存储不同种类的动物。addAnimal方法用于将动物添加到动物园中,makeSound方法用于让动物发出声音。通过运行main方法,我们可以看到Cat发出了"喵~"声,Dog发出了"汪汪~"声,Cow发出了"哞~"声。

总结

抽象类Java的多态数组是一种非常有用的编程技术,它允许我们使用父类类型的数组来存储各种子类类型的实例。这种技术提高了代码的灵活性和可维护性,值得我们深入学习和掌握。