HÉRITAGE
Héritage -> Une class peut être étendue pour des besoins spécifiques. Pour cela il faut :
- Déclarer notre class 'fille' de la manière suivante: class Fille extends Mere{}.
- Les attributs privés de la class mère seront mis en protected, si l'on veut s'en servir dans la class fille.
- Il est possible de déclarer d'autres attributs.
- Si le constructeur doit être étendu, il faut en refaire un dans la class fille, contenant en paramètre les attributs de la class mère puis les nouveaux.
- Si l'on étend le constructeur, il faut appeler le constructeur de la class mère dans celui de la class fille afin de ne pas avoir à tout redéclarer.
- Les méthodes de la class mère déclarées en public sont aussi accessibles.
- Une méthode peut être réecrite avec le même nom dans une class fille afin de l'adapter si besoin.
- Si on veut qu'une class ou qu'une function n'ai pas d'héritage, il faut mettre final devant la class ou la function.
Exemple d'une class mère User :
class User{
protected $nom;
public function __construct($nom){
$this->setNom($nom);
}
public function setNom($nom){
$this->nom = $nom;
}
public function getNom(){
return $this->nom;
}
public function seConnecter(){
echo $this->nom.', membre du site est bien connecté !';
}
}
Class fille Moderateur de User :
final class Moderateur extends User{
private $note;
public function __construct($nom, $note){
Parent::__construct($nom);
$this->setNote($note);
}
public function setNote($note){
$this->note = $note;
}
public function getNote(){
return $this->note;
}
public function seConnecter(){
echo $this->nom.', modérateur du site est bien connecté !';
}
}
Instance de la class Moderateur
$mod1 = new Moderateur('Denis', 15);
Affichage de la méthode getNom
echo mod1->getNom();
Denis
Affichage de la méthode seConnecter
echo mod1->seConnecter();
Denis, modérateur du site est bien connecté !