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()
.