Kowariancja, kontrawariancja i niezmienność opisują, jak zmienia się istniejąca hierarchia dziedziczenia typu po poddaniu jej pewnej transformacji (takiej jak użycie w rodzajach). Jeśli transformacja zachowuje kolejność oryginalnej hierarchii, jest „kowariantna”. Jeśli ją odwraca, jest „kontrawariantna”. Jeśli ją złamie, jest „niezmienna”.