Bonjour, je suis en train d'essayer de comprendre le systéme d'héritage. Cependant je bloque sur un cas particulier:
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 public class Test1 { public static void main(String[] args) { C c = new D(); c.f(); } } class C{ private int i = 0 ; public C(){ i = 1 ; f(); } public void f(){ System.out.print("i = " + i); } } class D extends C{ private int j = 0 ; public D(){ j = 1 ; } public void f(){ super.f(); System.out.println(" - j = "+ j ); } }
J'ai ceci comme code d'exécution :
Le probléme est que je my perds dans la l'exécution. Je ne sais pas qui est exécuter avant quoi !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 i = 1 - j = 0 i = 1 - j = 1
Je sais que la création d'un objet de type dérivé pour cette example :
1) Allocation mémoire oiur un objet de type B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part class B extends A
2) Initialisation par d"faut de tous les champs de B
3) Initialisation explicite, s'l y a lieu des champs hrités de A
4) Exécution du corps du constructeur de A
5) initialisation explicite des champs propre à B
6) Exécution du corps du constructeur de B.
Mais apparament sa ne colle pas avec mon cas , car j'instancie un objet de la classe mére avec un constructeur de la classe dérivé !
Est-ce qqun aurrait une idée ?
Partager