Главная > Java | Java labs > Ковариантность возвращаемых типов при переопределениие методов в Java

Ковариантность возвращаемых типов при переопределениие методов в Java

21.04.2012 1 коммент. » Просмотры: 5 778

Сегодня поиграемся с переопределением методов и разберемся, что такое ковариантность.

Итак, при переопределении методов (overriding) сигнатуры методов должны совпадать. В сигнатуру методов входит имя метода и его параметры. Возвращаемые параметры, туда не входят. За одним исключением, а именно метод в котором делается переопределение, может возвращать не только сам объект, но и его потомков. именно это и называется страшным словом ковариантность.

Под ковариантность подразумевается, что переопределённый метод может вернуть тип, производный от типа, возвращаемого методом базового класса.

Как всегда, начну с примера:

Результат:

Как видим в классе Employee, метод getPerson возвращает тип Person. А в наследнике Employee, классе Manager, в переопределенном методе, мы возвращаем уже класс Dude. В выводе мы вывели название вызываемых классов, поэтому видим что переопределение работает.

Вывод: При переопределении (overriding) сигнатуры методов должны совпадать. Возвращаемый тип должен либо совпадать, либо быть потомком первоначально выбранного объекта (ковариантные типы).

Похожие статьи

Автор: | Рейтинг: 4/5 | Теги: ,

Есть 1 комментарий.

Написать свой
  1. Valerii Ответить
    03.06.2019 в 4:08 пп
    Перше нормальне пояснення яке я знайшов, що таке "коваріантність".
    Автору - ЛАЙК.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Разрешены HTML-теги: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>