Héritage

Attention

L'héritage est explicitement hors programme. Ce sujet est toutefois abordé ici car il s'agit d'un élément très important de la programmation orientée objet.

L'héritage ne sera donc pas évalué lors des évaluations en classe ou au baccalauréat.

DéfinitionHéritage

L’héritage est un mécanisme clé en POO qui permet à une classe d'hériter des attributs et des méthodes d’une autre classe. La classe qui hérite est appelée la sous-classe, tandis que la classe dont elle hérite est appelée la super-classe. L’héritage permet de réutiliser du code et de créer des hiérarchies de classes pour représenter des concepts liés.

En Python, l’héritage est réalisé en définissant une nouvelle classe et en spécifiant la super-classe entre parenthèses après le nom de la nouvelle classe. La nouvelle classe hérite alors des attributs et des méthodes de la super-classe.

ExempleVeloElectrique

1
class Velo:
2
    """Représente un vélo avec une marque, un modèle et une couleur."""
3
4
    def __init__(self, marque, modele, couleur):
5
        """Initialise les attributs du vélo avec les valeurs données."""
6
        self.marque = marque
7
        self.modele = modele
8
        self.couleur = couleur
9
10
    def rouler(self, distance):
11
        """Fait rouler le vélo sur la distance donnée."""
12
        print(f"Le vélo {self.marque} {self.modele} roule sur {distance} km.")
13
14
class VeloElectrique(Velo):
15
    """Représente un vélo électrique avec une autonomie en plus."""
16
17
    def __init__(self, marque, modele, couleur, autonomie):
18
        """Initialise les attributs du vélo électrique avec les valeurs données."""
19
        super().__init__(marque, modele, couleur)
20
        self.autonomie = autonomie
21
22
    def rouler(self, distance):
23
        """Fait rouler le vélo électrique sur la distance donnée."""
24
        if distance > self.autonomie:
25
            print(f"Le vélo électrique {self.marque} {self.modele} ne peut pas rouler sur {distance} km.")
26
            return
27
        super().rouler(distance)
28
        self.autonomie -= distance
29
30
# Création d'un objet VeloElectrique
31
mon_velo = VeloElectrique('Peugeot', 'eC01 D10', 'gris', 50)
32
33
# Appel de la méthode rouler sur l'objet
34
mon_velo.rouler(40)  # Le vélo Peugeot eC01 D10 roule sur 40 km.

Dans cet exemple, nous avons défini une sous-classe VeloElectrique qui hérite de la classe Velo. La sous-classe VeloElectrique ajoute un nouvel attribut autonomie pour représenter l’autonomie du vélo électrique. Elle redéfinit également la méthode rouler pour vérifier que la distance demandée ne dépasse pas l’autonomie du vélo électrique.

Nous avons ensuite créé un objet mon_velo à partir de la sous-classe VeloElectrique et avons appelé la méthode rouler sur cet objet. Comme on peut le voir, la méthode rouler redéfinie dans la sous-classe VeloElectrique a été appelée et a vérifié que la distance demandée ne dépassait pas l’autonomie du vélo électrique.