解决这个问题的方法是使用接口来替代抽象类,并使用接口的实现类来创建数组。下面是一个示例代码:
// 定义一个接口
interface Animal {
void sound();
}
// 实现接口的类
class Dog implements Animal {
public void sound() {
System.out.println("汪汪");
}
}
class Cat implements Animal {
public void sound() {
System.out.println("喵喵");
}
}
public class Main {
public static void main(String[] args) {
// 创建一个Animal接口的数组
Animal[] animals = new Animal[2];
animals[0] = new Dog();
animals[1] = new Cat();
// 调用数组中每个元素的sound()方法
for (Animal animal : animals) {
animal.sound();
}
}
}
在上面的代码中,我们定义了一个Animal接口和两个实现该接口的类:Dog和Cat。然后,我们创建了一个Animal接口的数组,并使用实现类的实例来填充数组。最后,我们遍历数组中的每个元素,并调用其sound()方法。
这样,我们就实现了不使用抽象类的数组,并成功使用接口来替代抽象类的功能。