Ковариантные возвращаемые типы в Java

Опубликовано: 15 Февраля, 2022

До JDK 5.0 было невозможно переопределить метод, изменив тип возвращаемого значения. Когда мы переопределяем метод родительского класса, имя, типы аргументов и возвращаемый тип метода переопределения в дочернем классе должны быть точно такими же, как у метода родительского класса. Было сказано, что метод переопределения инвариантен по отношению к типу возвращаемого значения.

Ковариантные возвращаемые типы

Начиная с Java 5.0 можно иметь другой тип возвращаемого значения для метода переопределения в дочернем классе, но тип возвращаемого значения дочернего элемента должен быть подтипом родительского типа возвращаемого значения. Метод переопределения становится вариантным по отношению к типу возвращаемого значения.

Ковариантный возвращаемый тип основан на принципе подстановки Лискова.

Ниже приведен простой пример для понимания типа возвращаемого значения ковариантности с переопределением метода.

Выход:

 Базовое развлечение ()
Производное удовольствие ()


Примечание.
Если мы поменяем местами возвращаемые типы «Базовый» и «Производный», то вышеуказанная программа не будет работать. Посмотрите, например, эту программу.

Преимущества:

  • Это помогает избежать путаницы при приведении типов, присутствующих в иерархии классов, и, таким образом, делает код удобочитаемым, удобным и обслуживаемым.
  • Мы можем иметь более конкретные возвращаемые типы при переопределении методов.
  • Помощь в предотвращении исключений ClassCastExceptions во время выполнения при возврате

Эта статья предоставлена Gaurav Miglani . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .