Les rôles de this et super dans l'héritage Java

Dans la programmation orientée objet Java, l'héritage permet à une classe hériter des propriétés et comportements d'une autre classe. Les mots-clés this et this sont essentiels lors de la construction d'objets, notamment pour appeler d'autres constructeurs. Voici un exemple illustrant leur utilisation :


public class DemoHeritage {
    public static void main(String[] args) {
        Enfant instance = new Enfant();
    }
}

class Parent {
    public Parent() {
        System.out.println("Constructeur par défaut du parent");
    }
    public Parent(String donnee) {
        System.out.println("Constructeur paramétré du parent: " + donnee);
    }
}

class Enfant extends Parent {
    public Enfant() {
        this("exemple");
        System.out.println("Constructeur par défaut de l'enfant");
    }
    public Enfant(String donnee) {
        super(donnee);
        System.out.println("Constructeur paramétré de l'enfant: " + donnee);
    }
}

L'exécution de ce code produit les sorties suivantes :


Constructeur paramétré du parent: exemple
Constructeur paramétré de l'enfant: exemple
Constructeur par défaut de l'enfant

Pour comprendre ce résultat, il faut analyser le mécanisme de construction en Java. Lorsqu'un objet de classe Enfant est instancié via new Enfant(), le constructeur sans paramètre est appelé. À l'intérieur, this("exemple") redirige vers le constructeur paramétré de la même classe. Ce dernier appelle ensuite super(donnee) pour invoquer le constructeur paramétré de la classe parente.

Le mot-clé this a plusieurs fonctions dans Java :

  • Appel de constructeur : Permet da'ppeler un autre constructeur de la même classe. Cet appel doit être la première instruction dans un constructeur.
  • Référence aux membres : Distingue les variables d'instance des paramètres locaux, par exemple this.variable = valeur;.
  • Retour de l'instance courante : Utilisé dans les méthodes pour retourner l'objet actuel.

Le mot-clé super sert principalement à accéder aux membres de la classe parente. Pour les constructeurs, il permet d'appeler le constructeur de la superclasse, et doit également être placé en première position dans un constructeur.

Les règles de construction dans l'héritage sont les suivantes :

  1. Tout constructeur de sous-classe doit implicitement ou explicitement appeler un constructeur de sa superclasse.
  2. Pour un appel explicite, utilisez super(paramètres) en première ligne du constructeur.
  3. Si aucun appel explicite n'est fait, Java invoque automatiquement le constructeur par défaut de la superclasse.
  4. L'absence d'un constructeur par défaut dans la superclasse entraîne une erreur de compilation si l'appel est implicite.

Ainsi, dans l'exemple, this("exemple") initialise une chaîne d'appels qui garantit l'initialisation complète de l'objet en remontant hiérarchiquement.

Étiquettes: Java Héritage this super constructeurs

Publié le 1 juin à 21h49