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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
i = 1 - j = 0
i = 1 - j = 1
Le probléme est que je my perds dans la l'exécution. Je ne sais pas qui est exécuter avant quoi !!

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.
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 ?