Bonjour,
J’ai une petite question concernant le cast d’objet en java, il y a quelque chose qui m’echappe. Prenons les classes suivantes :
1 2 3 4 5 6 7 | class A { } class B extends A { public void t(A a) { System.out.println("a"); } public void t(B b) { System.out.println("b"); } } |
et le code suivant :
1 2 3 4 5 6 7 8 9 | A a = new A(); B b = new B(); b.t(a); // Selon moi, affiche a --> OK b.t(b); // Selon moi, affiche b --> OK a = b; System.out.println(a.getClass()); // Selon moi affiche Class b --> OK b.t(a); // Selon moi affiche b --> NON |
On a la sortie suivante :
1 2 3 4 | a b class B a |
Pourquoi après a = b
, quand on appelle la méthode t(a)
, c’est la méthode t(A a)
qui est appelé alors que a
est instance de la classe B
?
+0
-0