Skip to content

🔸1🔸L’héritage

L’héritage est un concept fondamental en programmation orientée objet qui permet de créer une nouvelle classe à partir d’une classe existante. La nouvelle classe hérite des attributs et méthodes de la classe parente.

Exemple avec la classe Personne

Commençons par une classe de base Personne :

public class Personne {
    private String nom;
    private String prenom;
    private int age;

    public Personne(String nom, String prenom, int age) {
        this.nom = nom;
        this.prenom = prenom;
        this.age = age;
    }

    // Accesseurs
    public String getNom() {
        return nom;
    }

    public String getPrenom() {
        return prenom;
    }

    public int getAge() {
        return age;
    }

    // Mutateurs
    public void setNom(String nom) {
        this.nom = nom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return prenom + " " + nom + " (" + age + " ans)";
    }
}

Première sous-classe : Etudiant

La classe Etudiant hérite de Personne en utilisant le mot-clé extends. Elle ajoute des attributs spécifiques aux étudiants :

public class Etudiant extends Personne {
    private String numeroDossier;
    private String programme;

    public Etudiant(String nom, String prenom, int age,
                    String numeroDossier, String programme) {
        super(nom, prenom, age);  // Appel du constructeur de la classe parente
        this.numeroDossier = numeroDossier;
        this.programme = programme;
    }

    // Accesseurs spécifiques à Etudiant
    public String getNumeroDossier() {
        return numeroDossier;
    }

    public String getProgramme() {
        return programme;
    }

    // Mutateurs spécifiques à Etudiant
    public void setNumeroDossier(String numeroDossier) {
        this.numeroDossier = numeroDossier;
    }

    public void setProgramme(String programme) {
        this.programme = programme;
    }

    @Override
    public String toString() {
        return super.toString() + " - " + programme +
                " (Dossier: " + numeroDossier + ")";
    }
}

Deuxième sous-classe : Professeur

Ajoutons maintenant une classe Professeur qui hérite aussi de Personne :

public class Professeur extends Personne {
    private String departement;
    private String specialite;

    public Professeur(String nom, String prenom, int age,
                      String departement, String specialite) {
        super(nom, prenom, age);
        this.departement = departement;
        this.specialite = specialite;
    }

    // Accesseurs spécifiques à Professeur
    public String getDepartement() {
        return departement;
    }

    public String getSpecialite() {
        return specialite;
    }

    // Mutateurs spécifiques à Professeur
    public void setDepartement(String departement) {
        this.departement = departement;
    }

    public void setSpecialite(String specialite) {
        this.specialite = specialite;
    }

    @Override
    public String toString() {
        return super.toString() + " - " + departement +
                " (Spécialité: " + specialite + ")";
    }
}

Points importants à noter

  • Le mot-clé extends indique l’héritage
  • super() appelle le constructeur de la classe parente
  • Les sous-classes héritent de toutes les méthodes publiques et protégées
  • @Override indique qu’on redéfinit une méthode de la classe parente
  • Les sous-classes peuvent ajouter leurs propres attributs et méthodes
  • Une sous-classe peut accéder aux méthodes de la classe parente avec super

Pour tester ces classes, voici un exemple d’utilisation :

public class TestHeritage {
    public static void main(String[] args) {
        Etudiant etudiant = new Etudiant("Tremblay", "Marie", 20,
                "12345", "Informatique");
        Professeur prof = new Professeur("Dubois", "Pierre", 45,
                "Informatique", "Java");

        System.out.println(etudiant);
        System.out.println(prof);
    }
}

Note

Page rédigée en partie avec l’aide d’un assistant IA, principalement à l’aide de Perplexity AI, avec le LLM Claude 3.5 Sonnet. 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.