我有上面的代码。如下所示,我想将派生类作为参数传递给process方法。
请建议任何替代方案。
class Fruit{
}
class Apple extends Fruit{
}
public interface Juice{
public void process(Fruit fruit);
}
Class abstract AbstractFruitManager implements Juice{
}
class FruitManager extends AbstractFruitManager{
public void process(Apple apple){ //gives compilation error...
}
}
答案 0 :(得分:1)
这样做
interface Juice {
void process(Fruit fruit);
}
并使用 @Override
class AbstractFruitManager implements Juice{
@Override
public void process(Fruit fruit){
}
}
答案 1 :(得分:1)
您不能将处理方法覆盖为
public void process(Apple apple)
正如你在FruitManager课程中所做的那样,因为它不再是Juice了。每个Juice实例必须接受其在Juice界面中承诺的过程方法中的任何Fruit。
您基本上有三种选择: