|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : juin 2007 Messages : 65 ![]() |
bonjour ,je suis débutante en java
j'essai depuis ce matin de comprendre le plymorphisme en java mais j'arrive pas ,j'ai lu plusieurs documents mais j'arrive pas !! est ce que vous pouvez me l'expliquer d'une maniére beaucoup plus simple sans un code ??? merci |
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() Inscription : juillet 2007 Messages : 694 ![]() |
Pour faire très simple, le polymophisme est une technique particulière d'héritage. Elle consiste, lorsqu'on hérite d'une classe, à redéfinir l'une des méthodes pour la spécialiser.
|
|
|
20
|
|
|
#3 | |||||
|
Membre Expert
![]() Inscription : avril 2003 Messages : 1 609 ![]() |
le plus simple je pense et de chercher "polymorphisme java" dans un moteur de recherche. Tu auras de nombreuses définitions et exemples.
Je me lance dans une explication et j'espère ne pas t'induire en erreur, car ce n'est pas vraiment facile à expliquer ... En gros, c'est un concept objet qui consiste à pouvoir utiliser la "même" méthode sur des objets différents. exemple banal. Tu prends une classe et des sous classes. Code :
Code :
Citation:
__________________
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!" Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/ |
|||||
|
|
30
|
|
|
#4 | ||
|
Membre éprouvé
![]() Inscription : octobre 2007 Messages : 442 ![]() |
Juste un petit complément qui peut être intéressant...
Généralement on définit la classe mère comme étant abstraite et on oblige les objets réels à définir leur comportement : Tu trouveras également de nombreux exemples sur les figures (triangle, carré, ...). Genre : Code :
|
||
|
|
01
|
|
|
#5 | ||||
|
Membre Expert
![]() |
Pour reprendre l'exemple de in, cela est particulièrement intéressant avec les conteneurs (Vector, List etc.).
Image que tu veuilles mettre des instances dedans, des chiens, des pigeons etc. et que tu veuilles qu'ils se déplaces tous. Pour cela, il te suffit de créer un conteneur d'animal : Code :
Code :
|
||||
|
|
20
|
|
|
#6 | |||
|
Membre Expert
![]() |
Citation:
|
|||
|
|
00
|
|
|
#7 |
|
Membre éprouvé
![]() Inscription : octobre 2007 Messages : 442 ![]() |
Merci iohack ! Affectivement !
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() oumar sendideveloppeur Inscription : septembre 2011 Messages : 1 ![]() |
merci pou tous le monde ce géniale
|
|
|
00
|
|
|
#9 | ||||||||||
|
Membre éclairé
![]() Inscription : septembre 2008 Messages : 293 ![]() |
Code :
Code :
De même, Code :
puis, dans Pigeon : Code :
Code :
|
||||||||||
|
|
00
|
|
|
#10 | |||||
Ahmed Étudiant Inscription : février 2012 Messages : 14 ![]() |
Citation:
|
|||||
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Eric Inscription : décembre 2010 Messages : 254 ![]() |
Et bien précisément, non...le message affiché pour chaque élément du tableau dépendra du type effectif de cet élément. Il faut juste comprendre qu'une variable a deux types en java:
1) le type de référence (c'est le type de la variable) 2) le type effectif: c'est le type de l'objet qui est dans cette variable à un instant donné. Le type de référence te dit quelles méthodes seront visibles depuis cette variable (ex: toutes les méthodes publiques définies par Animal, + les méthodes protected si on utilise la variable depuis une classe dérivée d'Animal) Le type effectif te dit quel sera le code effectivement utilisé quand tu appelles une méthode. |
|
|
10
|
|
|
#12 |
|
Membre émérite
![]() réveur professionnel Inscription : juillet 2006 Messages : 672 ![]() |
tu as plein d'objets dans ton troupeau et tu leur dis "arrétez-vous tous!"
comme ils sont Closeable ("fermable") il vont gentiment obéir ... chacun à sa manière, ces opérations de fermeture peuvent prendre des formes différentes (polymorphisme) , ces objets sont différents (et pas nécessairement apparentés par héritage), tu ne sais pas dans le détail ce qu'ils font mais ils vont le faire! ce genre de généralisation est très puissante car elle permet aussi de bien isoler les modifications de code: tu fais la paye et pour chaque salarié tu demande le taux horaire, chaque objet Salarié (du Lampiste au PDG) te donnes son taux horaire, si celui du PDG est modifié (au hasard
__________________
J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes! |
|
|
00
|
|
|
#13 |
|
Membre éprouvé
![]() Eric Inscription : décembre 2010 Messages : 254 ![]() |
Sauf que là (à moins que le taux horaire des salariés de base soit une valeur fixe et celui du PDG calculé en fonction de son taux du jour de clearstream) tu n'as pas besoin de deux classes, donc ce n'est pas du polymorphisme...
|
|
|
00
|
|
|
#14 | |
|
Membre émérite
![]() réveur professionnel Inscription : juillet 2006 Messages : 672 ![]() |
Citation:
cela prouve que je n'ai pas rendu mon exemple assez clair: un Salarie à une méthode getTauxHoraire les classes Lampiste, Grouillot, ContreMaitre, PetitChef, GrandChef, PDG ont chacune une méthode particulière (mais conforme au contrat "gatTauxHoraire" pour calculer le taux horaire en fonction de leur champs indice et de circonstances propres à leur métier. Ces codes sont mis et modifiés dans les classes correspondantes. La Paye de ne pose pas de question et elle demande à chaque instance conforme au "contrat" Salarie de lui donner son taux horaire .... C'est plus clair?
__________________
J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes! |
|
|
|
00
|
|
|
#15 |
|
Membre éprouvé
![]() Eric Inscription : décembre 2010 Messages : 254 ![]() |
Effectivement là on voit mieux la variation dans l'algorithme, donc à mon sens c'est plus clair.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com