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