Ковариантность, контравариантность и инвариантность описывают, как существующая иерархия наследования типов изменяется при некотором преобразовании (например, использовании в дженериках). Если преобразование сохраняет порядок исходной иерархии, оно является «ковариантным». Если он меняет положение, то это «контравариантность». Если он его сломает, он «инвариантен».