Ковариантность: позволяет использовать более конкретный тип, чем заданный изначально. Контравариантность: позволяет использовать более универсальный тип, чем заданный изначально. Инвариантность: позволяет использовать только заданный тип.