Code :
- public class Test
- {
- public static void main(String[] arg)
- {
- Materiau mat = new Bois();
- Machine m = new MachineBois();
- m.traiter(mat);
- }
- }
- class Materiau
- {
- }
- class Bois extends Materiau
- {
- }
- class Machine
- {
- public void traiter(Materiau m)
- {
- System.out.println("Matériau non affecté à une machine" );
- }
- }
- class MachineBois extends Machine
- {
- public void traiter(Bois b)
- {
- System.out.println("Traitement du BOIS en court..." );
- }
- }
|
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