Может ли кто-нибудь привести пример, когда полезно противоречие?
Контра-дисперсия бесполезна. Это просто свойство, которое есть у некоторых конструкторов типов.
Некоторые целые числа нечетные, некоторые четные. Это просто свойство, которым обладают эти целые числа.
Точно так же некоторые конструкторы типов ковариантны в параметре типа или противовариантном. (Или инвариант.)
и зачем использовать ковариацию […]?
Это тоже не то, что вы используете. Это просто то, что равно .
и зачем использовать ковариацию против наследования?
Этот вопрос действительно не имеет смысла. Не только по указанной выше причине (ковариация - это просто то, что равно , а не то, что вы используете), но и из-за связи между ними: дисперсия - это то, что является следствием взаимодействия полиморфизма подтипа и параметра c полиморфизма.