Ковариантные возвращаемые типы в Java
До JDK 5.0 было невозможно переопределить метод, изменив тип возвращаемого значения. Когда мы переопределяем метод родительского класса, имя, типы аргументов и возвращаемый тип метода переопределения в дочернем классе должны быть точно такими же, как у метода родительского класса. Было сказано, что метод переопределения инвариантен по отношению к типу возвращаемого значения.
Ковариантные возвращаемые типы
Начиная с Java 5.0 можно иметь другой тип возвращаемого значения для метода переопределения в дочернем классе, но тип возвращаемого значения дочернего элемента должен быть подтипом родительского типа возвращаемого значения. Метод переопределения становится вариантным по отношению к типу возвращаемого значения.
Ковариантный возвращаемый тип основан на принципе подстановки Лискова.
Ниже приведен простой пример для понимания типа возвращаемого значения ковариантности с переопределением метода.
Выход:
Базовое развлечение () Производное удовольствие ()
Примечание. Если мы поменяем местами возвращаемые типы «Базовый» и «Производный», то вышеуказанная программа не будет работать. Посмотрите, например, эту программу.
Преимущества:
- Это помогает избежать путаницы при приведении типов, присутствующих в иерархии классов, и, таким образом, делает код удобочитаемым, удобным и обслуживаемым.
- Мы можем иметь более конкретные возвращаемые типы при переопределении методов.
- Помощь в предотвращении исключений ClassCastExceptions во время выполнения при возврате
Эта статья предоставлена Gaurav Miglani . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .