C++ hériatage
Résolu
The_First_Empire
Messages postés
187
Date d'inscription
Statut
Membre
Dernière intervention
-
The_First_Empire Messages postés 187 Date d'inscription Statut Membre Dernière intervention -
The_First_Empire Messages postés 187 Date d'inscription Statut Membre Dernière intervention -
2 réponses
Exemple : A=Animal, B=Brebis, une brebis est un animal (B hérite de A), mais tous les animaux ne sont pas des brebis (A n'hérite pas de B).
Toi tu as une méthode A m(A), par exemple Animal donneNaissance(Animal).
N'importe quel animal peut donner naissance à un autre animal.
Si tu ne redéfinis pas ta méthode B m(B), tu peux utiliser celle de A.
Dans ce cas ta brebis (qui est un animal) va donner naissance à un autre animal, mais ce n'est pas forcément une brebis (le type de retour est A, pas B)
Si tu veux qu'une brebis donne naissance à une brebis il faut redéfinir la méthode B m(B) pour que dans le cas spécifique où l'animal est une brebis, l'animal à qui il donne naissance est aussi une brébis...
Je sais pas si tu comprends mieux avec mes brebis ^^
Toi tu as une méthode A m(A), par exemple Animal donneNaissance(Animal).
N'importe quel animal peut donner naissance à un autre animal.
Si tu ne redéfinis pas ta méthode B m(B), tu peux utiliser celle de A.
Dans ce cas ta brebis (qui est un animal) va donner naissance à un autre animal, mais ce n'est pas forcément une brebis (le type de retour est A, pas B)
Si tu veux qu'une brebis donne naissance à une brebis il faut redéfinir la méthode B m(B) pour que dans le cas spécifique où l'animal est une brebis, l'animal à qui il donne naissance est aussi une brébis...
Je sais pas si tu comprends mieux avec mes brebis ^^
Merci de ta réponse, j'avais un peu près compris le principe en codant jusqu'à maintenant, c'est plus le type de retour qui me gênait et tu viens de m'éclaircir avec tes brebis, le type de retour est bien celle de la classe mère et non celle de la fille.
B effectue(B objetB) retourne donc un A, au lieu de redéfinir toutes les méthodes de ce type, j'ai juste réussi à redéfinir l'opérateur = dans B pour pouvoir écrire :
objetB=effectue(B objetB)
Pb résolu merci bien
B effectue(B objetB) retourne donc un A, au lieu de redéfinir toutes les méthodes de ce type, j'ai juste réussi à redéfinir l'opérateur = dans B pour pouvoir écrire :
objetB=effectue(B objetB)
Pb résolu merci bien