Bonjour à tous,

J'ai un peu de mal à comprendre le polymorphisme dans JAVA... Comment il fonctionne et comment JAVA le comprends et le compile puis l’exécute.

Voici mon code:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
public class A {
 
	public String f(D obj) {
		return "AD";
	}
 
	public String f(A obj) {
		return "AA";
	}
}
 
public class B extends A {
	public String f(B obj) {
		return "BB";
	}
 
	public String f(A obj) {
		return "BA";
	}
}
 
public class C extends B {
 
}
 
public class D extends B{
 
}
 
public class tr {
	public static void main(String[] args) {
	A a1= new A();
	A a2=new B();
	B b= new B();
	C c= new C();
	D d= new D();
	System.out.println(a1.f(b));
	System.out.println(a1.f(c));
	System.out.println(a1.f(d));
	System.out.println(a2.f(b));
	System.out.println(a2.f(c));
	System.out.println(a2.f(d));
	System.out.println(b.f(b));
	System.out.println(b.f(c));
	System.out.println(b.f(d));
	}
}
J'obtiens l'affichage suivant:
AA // ici je comprends
AA // idem
AD // idem
BA // je ne comprends pas l'affichage ici, si je suis le principe de la résolution dynamique comment je le comprends, j'obtiens BB.. Vu que a2 a comme type effectif: B. Donc pour moi on a un truc du genre "Object B.f(Object B)".. Je ne comprends vraiment pas la technique...
BA // ici je ne comprends pas non plus
AD // ici non plus
BB
BB
AD


Si quelqu'un peut m'expliquer sa technique je suis preneur...

Merci d'avance,
Cordialement,
Tootun