Polymorphisme - choix de la méthode
Bonjour,
Je ne comprends pas pourquoi la méthode h de A est choisie plutôt que celle de C.
Code:
1 2 3 4 5 6 7 8 9 10
| public class A {
public A(){
}
public void h(A a, A aa){
System.out.println("h3 de A");
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11
| public class C extends A{
public C() {
}
public void h(A a, B b){
System.out.println("h de C");
}
} |
Voici la classe avec le main:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Test {
public Test() {
}
public static void main(String[]args){
A a = new A();
B b = new B();
C c = new C();
A x =new C();//transtypage
/*la référence est de type A mais le type réel est C*/
x.h(a,b);//appel de ma méthode h de A (ce que je ne comprend pas)
}
} |
A l'éxécution, il m'affiche "h3 de A". Je m'attendais à "h de c". En effet, bien que la reference soit de type A, le type réel est C. Comme h est redéfinie dans C, ne devrait-il pas appeler h de C?
Merci pour votre aide.