In der objektorientierten Programmierung beziehen sich die Begriffe Kovarianz und Kontravarianz auf die Art und Weise, wie Typen in Vererbungshierarchien behandelt werden.
Kovarianz bedeutet, dass sich die Typen von Rückgabewerten von Methoden in Unterklassen in die gleiche Richtung wie die Vererbungshierarchie ändern können.
Kontravarianz bedeutet, dass sich die Typen von Parametern von Methoden in Unterklassen in die entgegengesetzte Richtung zur Vererbungshierarchie ändern können.
In der objektorientierten Programmierung unterscheidet Kovarianz und Kontravarianz, ob ein Aspekt (d. h. eine Typdeklaration) gleichartig der Vererbungsrichtung (kovariant) oder entgegengesetzt zu dieser (kontravariant) ist.