L'héritage
L'héritage en POO c’est lorsqu'une classe dérive d'une autre classe.
La classe enfant héritera de toutes les propriétés et méthodes publiques et protégées de la classe parente. De plus, il peut avoir ses propres propriétés et méthodes.
Une classe héritée est définie à l'aide du mot-clé extends
.
exemple :
<?php
class Fruit {
public $name;
public $color;
public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
public function intro() {
echo("The fruit is {$this->name} and the color is {$this->color}.");
}
}
class Strawberry extends Fruit {
public function message() {
echo("Am I a fruit or a berry? ");
}
}
$strawberry = new Strawberry("Strawberry", "red");
$strawberry->message();
$strawberry->intro();
?>
Dans cet exemple, le résultat renvoyé est :
Am I a fruit or a berry? The fruit is Strawberry and the color is red.
La classe Fraise est héritée de la classe Fruit.
Cela signifie que la classe Strawberry peut utiliser les propriétés publiques $name
et $color
ainsi que les méthodes publiques __construct()
et intro()
de la classe Fruit en raison de l'héritage.
La classe Strawberry a aussi sa propre méthode : message()
.
Héritage et modificateur d’accès protégé
Les propriétés protected
ou les méthodes sont accessibles au sein de la classe et par les classes dérivées de cette classe.
exemple :
<?php
class Fruit {
public $name;
public $color;
public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
protected function intro() {
echo("The fruit is {$this->name} and the color is {$this->color}.");
}
}
class Strawberry extends Fruit {
public function message() {
echo("Am I a fruit or a berry? ");
}
}
$strawberry = new Strawberry("Strawberry", "red");
$strawberry->message();
$strawberry->intro();
?>
Dans cet exemple, le résultat renvoyé est :
Am I a fruit or a berry?
Dans l'exemple ci-dessus, nous voyons que si nous essayons d'appeler une méthode protected
(intro()
) depuis l'extérieur de la classe, nous recevons une erreur. Les méthodes public
fonctionnent bien !
Remplacement des méthodes héritées
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !