Développer en Java/Héritage
Covariance du type de retour
modifierDepuis Java 5
Sous ce nom obscur se cache tout simplement la possibilité d'utiliser, lors de la surcharge d'une méthode, un sous-type du type de retour défini dans la méthode surchargée.
Par exemple, la classe Object
définit la méthode clone()
qui retourne Object
.
La covariance permet d'écrire :
public class Classe
{
/** Redéfinition de Object#clone(). */
public Classe clone()
{
return new Classe();
}
}
À bien y réfléchir, ce n'est pas choquant étant donné que le contrat général défini dans la classe mère est bien respecté par la classe fille : dans tous les cas, clone()
retourne des Object
.
En java 1.4, ce code provoque une erreur de compilation parce que les types de retours ne coïncident pas.