Maison > Java > javaDidacticiel > Que sont la covariance, l'invariance et la contravariance en anglais simple ?

Que sont la covariance, l'invariance et la contravariance en anglais simple ?

Mary-Kate Olsen
Libérer: 2024-11-11 01:51:03
original
1009 Les gens l'ont consulté

What are Covariance, Invariance, and Contravariance in Plain English?

Comprendre la covariance, l'invariance et la contravariance en anglais simple

La covariance, l'invariance et la contravariance sont des termes qui décrivent comment les relations de frappe se comportent sous certaines conditions. transformations. En programmation, ces transformations peuvent être des conversions de type, un remplacement de méthode ou un héritage.

Covariance

La covariance signifie qu'un sous-type d'un type sera également un sous-type du type transformé. Par exemple, si la classe A est un sous-type de la classe B et que nous avons une fonction f(T) qui prend un type T et renvoie un type transformé T'', alors si A est un sous-type de B, f(A) être également un sous-type de f(B).

Contravariance

La contravariance est l'opposé de la covariance. Par contre, un sous-type d'un type sera mappé à un supertype du type transformé. Si la même fonction f(T) de l'exemple de covariance ci-dessus était contravariante, alors si A est un sous-type de B, f(B) serait un sous-type de f(A).

Invariance

L'invariance signifie que ni la covariance ni la contravariance ne s'appliquent à la transformation. Autrement dit, la relation de sous-type n'est pas affectée par la transformation.

Exemples

Considérez les exemples suivants :

Java Generics

Les génériques en Java sont invariants. Cela signifie que List, par exemple, n'est ni un sous-type ni un supertype de List.

Les tableaux

Les tableaux en Java sont covariants. Cela signifie que String[] est un sous-type de Object[].

Méthod Overriding

Dans le remplacement de méthode, la covariance s'applique aux types de retour et la contravariance s'applique aux types de paramètres. Autrement dit, si une sous-classe remplace une méthode de la superclasse, le type de retour peut être covariant (un sous-type du type de retour de la méthode de la superclasse) et les types de paramètres peuvent être contravariants (les supertypes des types de paramètres de la méthode de la superclasse).

En conclusion, la covariance, l'invariance et la contravariance décrivent comment les relations de typage se comportent sous différentes transformations, telles que les conversions de types, le remplacement de méthode ou l'héritage. Comprendre ces concepts peut aider les programmeurs à écrire du code plus flexible et extensible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal