Bonjour,
je suis tombé sur cet exercice sur internet:
Le main affiche
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
19
20
21
22
23
24 class A{ void m(A a){ System.out.println("m de A"); } void n(A a){ System.out.println("n de A"); } } class B extends A{ void m(A a){ System.out.println("m de B"); } void n(B b){ System.out.println("n de B"); } public static void main(String[] argv){ A a = new B(); B b = new B(); a.m(b); a.n(b); } }
m de B
n de A
mais je ne voie pas pq...D'après moi:
a et b référencent des objets de type B.
on appelle l'opération m(B) de la classe B qui n'existe pas pour un objet B en paramètre, mais un objet B est aussi un objet A, donc on appelle m(A) de la classe A qui affiche m de A
La 2ème ligne me choque encore plus:
on appelle a.n(b); avec a et b des références sur des objets de la classe B, donc on appelle n(B) de la classe B qui devrait normalement afficher:
n de b
???
Merci.
Partager