我是Java编程的初学者,想了解在这里处理多态引用的正确方法。
假设我们在C ++中有以下(抽象)代码:
List<Fruit*> lstFruit;
...
// collect apples here
while (...)
{
Fruit* apple = new Apple("green");
lstFruits.append(apple);
}
...
lstFruit[i]->doSomething(); // here is our virtual method
Java不允许我创建一个List
集合,其中引用了abstract
的基类。在这种情况下我该怎么办?我的目标是普遍使用不同的子类对象,无论他们的班级是什么。
答案 0 :(得分:5)
您可以使用抽象类创建一个通用集合:
List<Fruit> l = new ArrayList<Fruit>();
l.add(new Apple());
l.get(0).someFunctionOnFruit();