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

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

21.04.2012 1 comment » Views: 8,608

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

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

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

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

Результат:

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

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

Author: | Rating: 4/5 | Tags: ,

1 comment.

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>