Java - 6.10 Les mots-clés this et super en Java
Les mots-clés this et super reviennent souvent dans les classes Java. Ils permettent de désigner l'objet courant ou la classe mère. Cette leçon explique leurs usages, leurs règles, puis le chaînage des constructeurs.
Le rôle de super
Le mot-clé super permet d'accéder aux membres de la classe mère : attributs, méthodes et constructeurs. Il est utile quand la classe fille veut appeler une méthode du parent.
Dans un constructeur, l'appel à super doit être la première instruction. Si on ne l'écrit pas, le compilateur insère lui-même un appel à super.
Sans super, une méthode qui appelle une méthode de même nom se rappellerait elle-même sans fin, jusqu'à épuiser la mémoire.
Le rôle de this
Le mot-clé this désigne l'objet courant, avec ses attributs et ses méthodes. Il est souvent utilisé dans un constructeur quand un paramètre porte le même nom qu'un attribut.
Dans une méthode statique, ni this ni super ne sont utilisables. Toute tentative provoque une erreur de compilation.
Chaîner les constructeurs
Un constructeur peut appeler un autre constructeur de la même classe avec this. Cela évite de répéter le même code d'initialisation dans chaque constructeur.
La bonne pratique consiste à concentrer l'initialisation des variables dans un seul constructeur, que les autres appellent. La vidéo explique que dupliquer l'initialisation peut conduire à de nombreux bugs.
Un constructeur ne peut pas appeler à la fois this et super : un seul de ces appels est possible, et il doit être la première instruction.
En résumé
this désigne l'objet courant, et super désigne la classe mère. Ces deux mots-clés sont interdits dans une méthode statique. Pour les constructeurs, un seul appel est possible, en première instruction, et le chaînage évite de dupliquer l'initialisation.
Points clés
- super accède aux membres de la classe mère.
- this désigne l'objet courant.
- Dans un constructeur, l'appel à this ou à super doit être la première instruction.
- Ni this ni super ne sont utilisables dans une méthode statique.
- Le chaînage des constructeurs évite de répéter l'initialisation.
Questions fréquentes
Que se passe-t-il si on n'écrit pas super dans un constructeur ?
Le compilateur insère lui-même un appel à super au début du constructeur.
Quand utiliser this dans un constructeur ?
Quand un paramètre porte le même nom qu'un attribut, this permet de distinguer l'attribut du paramètre.
Peut-on utiliser this et super ensemble dans un constructeur ?
Non, la vidéo précise qu'ils ne se combinent jamais dans le même constructeur. Un seul des deux appels est choisi.