Возврат объекта типа подкласса вместо объекта типа суперкласса, как того требует интерфейс - PullRequest
0 голосов
/ 25 июня 2011

У меня есть класс с именем Node и другой класс с именем ClassicNode, который расширяет Node. Теперь у меня есть интерфейс AgentInterface, реализованный классом ClassicNode. Интерфейс утверждает, что должен быть метод

Node selection();

Как видите, тип возвращаемого значения должен быть типа Node. Но в классе ClassicNode я могу реализовать это так: -

ClassicNode selection(){
    //Code
}

Будет ли это удовлетворять интерфейс? (поскольку ClassicNode наследует Node)

Ответы [ 2 ]

5 голосов
/ 25 июня 2011

Да;это называется ковариантный возврат .Обратите внимание, что вы не можете делать то же самое с параметрами;они должны точно соответствовать.

2 голосов
/ 25 июня 2011

Итак, почему бы вам не провести эксперимент?меньше работывы можете просто добавить аннотацию @Override к сигнатуре вашего метода, а затем попытаться скомпилировать код, если он успешен, означает, что он работает или произошел сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...