Bonjour,
Pour commencer imaginons que ma classe Loup hérite de la classe Animal.
je me demande quelles sont les différences entre :
Je vous remercie d'avance.Code:
1
2
3 Animal A = new Loup(); Loup B = new Loup(); Object C = new Loup();
Version imprimable
Bonjour,
Pour commencer imaginons que ma classe Loup hérite de la classe Animal.
je me demande quelles sont les différences entre :
Je vous remercie d'avance.Code:
1
2
3 Animal A = new Loup(); Loup B = new Loup(); Object C = new Loup();
Bonjour,
Aucune différence du point de vue du contenu : A, B et C contiennent des Loups.
mais la déclaration 1 est plus intéressante, puisqu'elle permettra de mettre en oeuvre le polymorphisme d'héritage.
Admettons que la classe Animal déclare le comportement suivant (aptitude à crier)
Que tu aies une classe dérivée Chat de Animal qui implémente CrierCode:
1
2
3
4 public abstract class Animal { public abstract void crier(); }
Que tu fasses de même pour le loupCode:
1
2
3
4
5
6 Class Chat extends Animal{ @Override public void crier(){ system.out.println("miaulement"); }
Code:
1
2
3
4
5
6 Class Loup extends Animal{ @Override public void crier(){ system.out.println("Hurlement"); }
En ayant déclaré
L'appel suivant provoquera soit des hurlements, soit des miaulements à l'exécution, en fonction de ce que le programme aura affecté comme instance d'animal à unAnimal. C'est ce qu'on appelle le polymorphisme.Code:
1
2 Animal unAnimal;
Ca ne serait pas possible si on déclarait unAnimal en tant que Loup directement :Code:
1
2 unAnimal.crier();
Code:
1
2 Loup unAnimal;
Premièrement merci de votre réponse rapide et efficace.
Donc si j'ai bien compris, je déclare
Ensuite j'instancie unAnimal en loup ou chat en fonction de mes besoin?Code:Animal unAnimal;
Par exemple, si je veux que unAnimal miaule je ferai
Code:
1
2 unAnimal = new Chat(); unAnimal.crier();
Exactement !
et on a encore plus une impression de magie (polymorphe) lorsque c'est le déroulement du programme (intervention de l'utilisateur ou le temps qui passe) qui transforme l'animal en Chat pour le faire miauler...
Je veux dire pas là que la ligne de code toute seule :
unAnimal.crier();
ne permet pas de savoir quel sera le cri entendu (à la compilation) et que seule l'exécution du programme permettra de le savoir
Je vous remercie.
Bonne soirée. :ccool: