Passer au contenu principal

Comprendre l'héritage en POO

L’héritage est un concept fondamental de la programmation orientée objet. Il offre la possibilité à une classe dite enfant d’hériter de toutes les propriétés et méthodes public et protected d’une classe parente.

L’héritage est particulièrement utile pour définir et abstraire certaines fonctionnalités communes à plusieurs classes. Il permet également d’ajouter des fonctionnalités spécifiques dans les classes enfants, sans avoir à réimplémenter toutes les fonctionnalités communes.

En PHP, le mot-clé extends est utilisé pour implémenter l’héritage entre les classes.

Les méthodes privées d’une classe parente ne sont pas accessibles à la classe enfant. Par conséquent, les classes enfants peuvent réimplémenter une méthode privée sans se soucier des règles d’héritage habituelles.

La visibilité des méthodes, propriétés et constantes peut être assouplie, c’est-à-dire qu’une méthode protected de la classe parente peut être marquée comme public dans la classe enfant, mais elle ne peut pas être restreinte, par exemple, marquer une propriété public comme private.

Une exception concerne les constructeurs, pour lesquels la visibilité peut être restreinte. Par exemple, un constructeur public peut être annoté en tant que private dans la classe enfant.

<?php

// Classe parente
class Animal {
    protected string $name;

    public function __construct(string $name) {
        $this->name = $name;
    }

    public function eat(): string {
        return $this->name . " is eating.";
    }
}

// Classe enfant
class Dog extends Animal {
    public function bark(): string {
        return $this->name . " is barking.";
    }
}

$dog = new Dog("Rex");

echo $dog->eat(); // Affiche : "Rex is eating."
echo $dog->bark(); // Affiche : "Rex is barking."

?>

Dans cet exemple, la classe Dog hérite de la classe Animal et a donc accès à sa méthode eat(). De plus, la classe Dog a sa propre méthode bark().