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:
J'obtiens l'affichage suivant:
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)); } }
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
Partager