Bonjour à tous et à toutes, ô valeureux combattants du NullPointerException !
Une question existentielle me taraude depuis 15 min, et c'est pourquoi je m'apprête à m'adresser à vous.
Bon, il s'agit ici de constructeur![]()
J'ai une classe que l'on va appeller ... Claudia (ben oui, pourquoi MaClasse ou Test ...). Cette Classe hérite d'une classe abstraite TopModel dans laquelle est défini un constructeur qui est sensé ne servir a rien sinon initialiser des champs :
Lorsque je crée une Claudia, je fais new Claudia(1.18) et ça m'appelle le constructeur de Claudia suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 PaireDeJambes mesJambes; public TopModel(){ mes Jambes=new PaireDeJambes(1.00f); }
Il me semblait que tout constructeur dérivé prenait en totalité la charge de la construction de l'objet. Donc j'en déduisais que mon appel au constructeur de Claudia ne créait qu'une seule instance de PaireDeJambes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public Claudia(float longueur){ mesJambes=new PaireDeJambes(longueur); }![]()
Or en profilant la chose avec TPTP, quelle n'est pas ma surprise en découvrant non pas UNE mais DEUX instances de PaireDeJambes !!!!![]()
Je debugge un coup, et je me rends compte que le new Claudia(1.18) appelle un new TopModel() et crée donc une instance de PaireDeJambes et puis ensuite appelle le constructeur de Claudia et crée une deuxième instance....
Ma question est : Auriez vous une explication à cela ?
Merci d'avance
(en même temps, ma femme m'a fait le même coup à la deuxième échographie, je ne m'attendais qu'à une instance deet j'en ai eu deux
)
Partager