2. Les mots-clé this et super¶
Dans le contexte de la programmation orientée objet en Java, voici les différences clés entre this et super :
Définition et Portée¶
this fait référence à l’instance courante de la classe actuelle, tandis que super fait référence à la classe parente immédiate[1].
Utilisations Principales¶
Accès aux attributs¶
this.attributaccède aux attributs de la classe courantesuper.attributaccède aux attributs de la classe parente[1]
Appel des constructeurs¶
this()appelle un autre constructeur de la même classesuper()appelle le constructeur de la classe parente[2]
Résolution des conflits de noms¶
public class Etudiant extends Personne {
private String nom; // Attribut local
public void setNom(String nom) {
this.nom = nom; // Attribut local
super.nom = nom; // Attribut de la classe parente; ne doit pas être privé pour avoir accès
}
}
Attention
Bien que l’exemple précédent soit valide (il compile si nom dans parent n’est pas privé), il n’est pas recommandé
d’utiliser des attributs différents avec le même nom dans une sous-classe, pour éviter des problèmes de références
à ces attributs dûs à la confusion possible entre les attributs.
Règles importantes¶
super()doit être la première instruction dans un constructeur[3]- On ne peut pas utiliser
this()etsuper()dans le même constructeur[5] - L’utilisation de
superest essentielle dans l’héritage pour accéder aux membres de la classe parente qui sont masqués par la classe enfant[3]
Tableau comparatif¶
| Caractéristique | this | super |
|---|---|---|
| Référence | Instance courante | Classe parente |
| Portée | Classe actuelle | Classe parente immédiate |
| Constructeur | Appelle autre constructeur de la même classe | Appelle constructeur de la classe parente |
| Position | Première instruction si utilisé dans constructeur | Première instruction si utilisé dans constructeur |
Citations
- [1] https://www.studysmarter.fr/resumes/informatique/programmation-informatique/mot-cle-this-de-java/
- [2] https://www.justacademy.co/blog-detail/difference-between-this-and-super-in-java
- [3] https://www.scientecheasy.com/2019/11/difference-between-super-and-this-keyword-in-java.html/
- [4] https://www.javatpoint.com/this-vs-super-in-java
- [5] https://www.scaler.com/topics/java/this-and-super-keyword-in-java/
Utilisation de l’IA
Page rédigée en partie avec l’aide d’un assistant IA. L’IA a été utilisée pour générer des explications, des exemples et/ou des suggestions de structure. Toutes les informations ont été vérifiées, éditées et complétées par l’auteur.