例如我有一個處理器基類與返回一個對象,並採取對象作爲參數的方法。我想擴展它,並創建一個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;
}
}