Ví dụ tôi có một lớp cơ sở xử lý với một phương thức trả về một đối tượng và lấy Object làm tham số. Tôi muốn mở rộng nó và tạo ra một StringProcessor sẽ trả về String và lấy String làm tham số. Tuy nhiên, chỉ có thể cho phép nhập biến đổi với giá trị trả về, chứ không được phép tham số. Lý do cho những hạn chế như vậy là gì?Tại sao phương pháp ghi đè java cho phép có các kiểu trả về biến đổi, nhưng không phải là các tham số covariant?
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;
}
}