Question sur le polymorphismes
Résolu/Fermé
Creutzou
Messages postés
550
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
30 mai 2013
-
18 mai 2011 à 17:55
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 - 19 mai 2011 à 09:56
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 - 19 mai 2011 à 09:56
6 réponses
choubaka
Messages postés
39375
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
14 avril 2024
2 100
18 mai 2011 à 17:58
18 mai 2011 à 17:58
Bonjour
ça me paraît correct dans le raisonnement.
le polymorphisme étant une variante dans le comportement d'un objet
ça me paraît correct dans le raisonnement.
le polymorphisme étant une variante dans le comportement d'un objet
Creutzou
Messages postés
550
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
30 mai 2013
30
18 mai 2011 à 18:01
18 mai 2011 à 18:01
Donc si
on pose une class mère Maman avec une méthode a.
une class fille Fille qui hérite de Maman, dans la quelle on redéfinis la méthode a.
Selon le type de l'objet, il fera appelle à la méthode de Maman ou de Fille ?
C'est bien ça ?
on pose une class mère Maman avec une méthode a.
une class fille Fille qui hérite de Maman, dans la quelle on redéfinis la méthode a.
Selon le type de l'objet, il fera appelle à la méthode de Maman ou de Fille ?
C'est bien ça ?
choubaka
Messages postés
39375
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
14 avril 2024
2 100
18 mai 2011 à 18:07
18 mai 2011 à 18:07
tout dépendra de l'instance appelée
mais dans la classe fille, on peut faire appel à la méthode de la classe mère (via super) et l'étendre.
}
mais dans la classe fille, on peut faire appel à la méthode de la classe mère (via super) et l'étendre.
}
choubaka
Messages postés
39375
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
14 avril 2024
2 100
18 mai 2011 à 18:08
18 mai 2011 à 18:08
il suffit d'ajouter ce qui concerne la spécialisation des classes filles au code de la classe mère.
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
Modifié par KX le 18/05/2011 à 18:11
Modifié par KX le 18/05/2011 à 18:11
Imaginons que tu veuilles faire x.m() où x est un objet de la classe C.
Java va chercher dans la classe C la méthode m.
Si elle existe c'est celle-ci qui est lancée, sinon il va la chercher dans la superclasse.
Si elle existe dans la superclasse c'est celle-ci qui est lancée sinon il remonte et ainsi de suite jusqu'à trouver ou remonter à la classe Object. Si la méthode m n'existe pas tu auras une erreur.
Dans ton exemple, tu peux faire System.out.println(new Fille());
La méthode println(Object) va chercher la méthode toString dans la classe Fille, ne la trouvant pas il va chercher la méthode toString() dans la classe Mere, et comme il ne la trouvera toujours pas il utilisera la méthode toString() de la classe Object...
La confiance n'exclut pas le contrôle
Java va chercher dans la classe C la méthode m.
Si elle existe c'est celle-ci qui est lancée, sinon il va la chercher dans la superclasse.
Si elle existe dans la superclasse c'est celle-ci qui est lancée sinon il remonte et ainsi de suite jusqu'à trouver ou remonter à la classe Object. Si la méthode m n'existe pas tu auras une erreur.
Dans ton exemple, tu peux faire System.out.println(new Fille());
La méthode println(Object) va chercher la méthode toString dans la classe Fille, ne la trouvant pas il va chercher la méthode toString() dans la classe Mere, et comme il ne la trouvera toujours pas il utilisera la méthode toString() de la classe Object...
La confiance n'exclut pas le contrôle
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Creutzou
Messages postés
550
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
30 mai 2013
30
18 mai 2011 à 18:14
18 mai 2011 à 18:14
D'accord, je commence un peu à y voir. Même si cela reste encore très flou.
Comme il disait, c'est en Sciant que Leonard devin sci :)
En tout cas merci à vous.
Comme il disait, c'est en Sciant que Leonard devin sci :)
En tout cas merci à vous.
Creutzou
Messages postés
550
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
30 mai 2013
30
19 mai 2011 à 09:56
19 mai 2011 à 09:56
Après une bonne nuit de sommeil, et une re-lecture, ça m'a l'air plus clair.
Je vous remercie grandement.
Thomas
Je vous remercie grandement.
Thomas