例如我有一个处理器基类与返回一个对象,并采取对象作为参数的方法。我想扩展它,并创建一个StringProcessor将返回字符串,并采取String作为参数。然而 协打字只能用返回值,但不允许参数。这种限制的原因是什么?在Java方法重载为什么允许有协变返回类型,但不是协变的参数?
class Processor {
Object process (Object input) {
//create a copy of input, modify it and return it
return copy;
}
}
class StringProcessor extends Processor {
@Override
String process (String input) { // permitted for parameter. why?
//create a copy of input string, modify it and return it
return copy;
}
}