Soit une classe A :
et une classe fille B qui surcharge la méthode afficher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class A { public void afficher () { System.out.println ("A"); } }
L'exécution du code suivant montre que le cast de B vers A (upcasting) est ignoré !?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class B extends A { // surcharge public void afficher () { System.out.println ("B"); } }
1/ Pourquoi la méthode B.afficher() est-elle appelée au lieu de la méthode A.afficher() ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class TestUpcasting { public static void main(String[] args) { A objetA = new A(); objetA.afficher (); // => affiche 'A' (pas de surprise) B objetB = new B(); objetB.afficher (); // => affiche 'B' (pas de surprise là non plus) ((A) objetB).afficher (); // => affiche 'B' au lieu de 'A' !? } }
2/ Comment transformer un objet B en objet A ?
Partager