On dit qu'un langage applique la règle de covariance si, dans le cas de la redéfinition d'une méthode héritée, le type des arguments ou le type du résultat peuvent être remplacés par un type plus spécifique. Par exemple, si la classe POMME hérite de la classe FRUIT, les arguments (ou le résultat) des méthodes redéfinies peuvent passer de FRUIT à POMME. Ce changement de type est valide selon la règle de covariance. Ainsi, la possibilité de redéfinition varie dans le même sens que la relation d'héritage, d'où le nom de covariance.
Le mécanisme de la covariance apporte une nouvelle perspective au sein du langage Java. Comme les Generics [sic], ce principe donne la possibilité de détecter les erreurs de typage plus tôt durant le développement.