CodeGym /Cours /Bases de Java /Mission bonus | Leçon 12 | Niveau 5

Mission bonus | Leçon 12 | Niveau 5

Bases de Java
Niveau 5 , Leçon 12
Disponible

« Hé, soldat ! »

« Bonjour, Capitaine ! »

« J'ai d'excellentes nouvelles pour toi. Voici quelques exercices pour renforcer tes compétences. Travaille dessus chaque jour et tes compétences vont croître à une vitesse folle. Elles ont été créées spécialement pour IntelliJ IDEA. »

« Ces exercices précédents étaient pour les débutants. J'ai ajouté quelques exercices bonus plus avancés pour les habitués. Rien que pour les vétérans. »

Commentaires (2)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Paul-Louis Vernisse niveau 20, France, France
15 avril 2023
Bonjour à vous, dans l'ex "déboguer, déboguer et encore déboguer, je ne comprends pas la séquence suivante : - la méthode main() appelle un "new B(6)" OK - le constructeur de la classe B appelle celui de la classe parente A avec un paramètre 6, OK - dans le constructeur de la classe A, on exécute le "this.f1 = f1" OK - puis on appelle "initialise()" et la je ne comprends pas pourquoi on va chercher la méthode "initialise()" de B alors qu'on est dans le constructeur de la classe A ! Quelqu'un peut m'aider ?
M E niveau 22, Switzerland
26 juin 2023
Bonjour, Si je ne dis pas de bêtises : La fonction initialize() de la classe A est overridée par la fonction initialize() de la classe B. Donc, quand le constructeur de la classe A est appelé, c'est la fonction initialize() de la classe B qui est exécutée. À ce moment là, dans la classe B, la variable f1 n'a pas pas encore reçu sa valeur et donc vaut 0 par défaut. Si on passe la fonction initialise() de la classe A en private, elle ne peut plus être overridée. Et donc, quand le constructeur de la classe A est appelé, c'est la fonction initialize() de la classe A qui est exécutée. À ce moment, la variable f1 a reçu sa valeur qui est 6.