Aller au contenu

Développer en Java/Héritage

Un livre de Wikilivres.
Version datée du 16 avril 2020 à 09:59 par DannyS712 (discussion | contributions) (<source> -> <syntaxhighlight> (phab:T237267))

Covariance du type de retour

Depuis 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éfinit 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éfinit 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.