Перейти к основному содержимому

Контравариантность

Контравариантность — это обращение иерархии исходных типов на противоположную в производных типах.

Например, тип Строка наследуется от типа Объект, а функциональный тип (Т)->Строка определен как метод, принимающий экземпляр типа T, то (Объект)->Строка наследуется от (Число)->Строка, а не наоборот. Действительно, если «все строки — объекты», то «всякий метод, оперирующий произвольными объектами, может выполнить операцию над строкой», но не наоборот.

В таком случае говорят, что тип (Т)->Строка контравариантен своему параметру-типу T.