[Java] Polymorphisme : besoin d'explications

Polymorphisme : besoin d'explications [Java] - Java - Programmation

Marsh Posté le 08-03-2004 à 14:19:42    

Code :
  1. public class Test
  2. {
  3. public static void main(String[] arg)
  4. {
  5.  Materiau mat = new Bois();
  6.  Machine m = new MachineBois();
  7.         m.traiter(mat);
  8. }
  9. }
  10. class Materiau
  11. {
  12. }
  13. class Bois extends Materiau
  14. {
  15. }
  16. class Machine
  17. {
  18. public void traiter(Materiau m)
  19. {
  20.  System.out.println("Matériau non affecté à une machine" );
  21. }
  22. }
  23. class MachineBois extends Machine
  24. {
  25. public void traiter(Bois b)
  26. {
  27.  System.out.println("Traitement du BOIS en court..." );
  28. }
  29. }


Pourquoi lors de l'éxécution, s'affiche "Matériau non affecté à une machine" et non "traitement du bois..." ?
si on reprend ce code en faisant une méthode traiter sans paramètre, c'est bien "traiter" de la classe MachineBois qui est appelé. Par contre avec le code ci-dessus c'est pas bon...
Je comprends pas pourquoi, car le type réel de "mat" est Bois...
merci
   ANT

Reply

Marsh Posté le 08-03-2004 à 14:19:42   

Reply

Marsh Posté le 08-03-2004 à 14:21:04    

Parcequ'il y a pas de typage dynamique sur les paramètres de fonctions.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 08-03-2004 à 14:22:48    

ah ok, j'avais essayé avec une classe abstraite et c'est donc pour ça que ça ne marchais (je me doutais de ce truc mais je ne savais pas exactement son nom...)
merci !

Reply

Marsh Posté le 08-03-2004 à 14:50:48    

pattern Visiteur pour l'équivalent d'un typage dynamique des paramètres.


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed