Problème d'héritage et de type de retour

Signaler
Messages postés
24
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
8 février 2009
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Plop,

Alors j'expose rapidement mon problème et le plus simplement possible :)

public abstract class A{

public C plop();

}

public class B:A{

public override D plop(){
    ...
}

public class C{}

public class D:C{}

}

Apparement, ceci n'est pas possible (je parle du public override D plop). J'aimerais qu'on m'explique en quoi cela n'est pas possible puisque l'on peut très bien faire C = D...

L'erreur est 'B.plop()' : le type de retour doit être 'C' pour correspondre au membre substitué 'A.plop()'

J'ai du mal à comprendre la logique de la chose à vrai dire, et ça enlève même un des grands intérêt de l'héritage...

Ah aussi, au cas où certains y penseraient, ça ne fonctionne pas non plus avec une interface (on ne sais jamais);

Merci d'avance

LTourist

PS : je n'ai pas trouver de catégorie qui corresponde à ma question...

1 réponse

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Bonsoir,
Puisque D dérive de C, il suffit de retourner un type D.

        public override C plop()
        {
            return new D();
        }

<hr />-My Blog-