Ковариантный тип возврата позволяет дочернему классу переопределить метод родительского класса и вернуть более узкий (более специфичный) тип, чем метод родительского класса. Вместо возврата типа родителя переопределяемый метод может вернуть подтип исходного типа возврата.
В объектно-ориентированном программировании это означает:
AB (где B расширяет A)Рассмотрим родительский класс Animal и дочерний класс Dog:
class Animal {
public Animal getAnimal() {
return new Animal();
}
}
class Dog extends Animal {
@Override
public Dog getAnimal() {
return new Dog();
}
}
Класс Dog переопределяет getAnimal(), но возвращает экземпляр Dog вместо экземпляра Animal.
Эта возможность улучшает поддерживаемость кода, сохраняя при этом полиморфное поведение.
Ковариантные типы возврата позволяют дочернему классу переопределить метод родителя и вернуть более специфичный подтип исходного типа возврата.
Новый — ещё не проверен сообществом
Вы