Bonsoir,

En adaptant un exo trouve sur ce site, j'ai ecrit le code 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
class Mammifere {
        static { System.out.println("Creation d'un mammifere");}
 
        public Mammifere(){
                System.out.println("Je suis un mammifere");
        }
 
        static { System.out.println("Creation terminee");}
}
 
public class Homme extends Mammifere {
        public Homme(){
                System.out.println("Je suis un homme");
        }
 
        public static void main(String[] args) {
                System.out.println("Un fils va nous etre donne");
                Homme h = new Homme();
                System.out.println("Un nouvel homme est ne");
        }
}
La sortie est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
nuriel@serenity:$ javac Homme.java 
nuriel@serenity:$ java Homme 
Creation d'un mammifere
Creation terminee
Un fils va nous etre donne
Je suis un mammifere
Je suis un homme
Un nouvel homme est ne
En ne donnant pas de nom aux methodes statiques, elles sont appelees d'office, et avant le constructeur de la classe parente. Quelqu'un pourrait il m'expliquer le deroulement des appels qui finit par les invoquer ? Je m'attendais a ce que seul le constructeur du parent soit appele. Quelle est l'utilite d'avoir une methode statique comme celles ci ?

D'avance merci