Почему Java допускает переоценки методов с типами возврата подкласса, но не параметром подкласса?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему Java допускает переоценки методов с типами возврата подкласса, но не параметром подкласса?

Сообщение Anonymous »

Если у меня есть абстрактный (или, насколько я знаю) Superclass в Java, как SO: < /p>

Код: Выделить всё

public abstract class Person {
public abstract Person getPerson(Person p);
}
< /code>
Я заметил, что подкласс может использовать себя для типа возврата, но не параметр при переоценке этого метода: < /p>
public class Child extends Person {
@Override
public Child getPerson(Person p) { //Works fine
return this;
}

@Override
public Person getPerson(Child p) { //Doesn't work
return this;
}
}
< /code>
Почему это не разрешено? Я не прошу решения - я знаю, что мог бы просто использовать экземпляр 
Проверьте метод или что -то в этом роде, я больше спрашиваю, почему первое приемлемо, а последний не для компилятора.

Подробнее здесь: https://stackoverflow.com/questions/676 ... but-not-su

Вернуться в «JAVA»