< Développer en Java

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.

Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.