Surcharge des méthodes parentes en POO en PHP
Une classe enfant peut surcharger une méthode du parent en créant une méthode du même nom. Regardons un exemple. Supposons que nous ayons la classe parente suivante :
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Créons une méthode du même nom dans la classe enfant :
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Généralement, la surcharge des méthodes parentes est nécessaire pour modifier ou compléter le comportement de cette méthode. Dans notre cas, ajoutons une vérification de la longueur du nom :
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Assurons-nous que c'est bien la méthode surchargée qui est appelée. Commençons par créer un objet de la classe enfant :
<?php
$student = new Student;
?>
Maintenant, appelons notre méthode, en lui passant une valeur correcte :
<?php
$student->setName('john');
?>
Et maintenant, appelons la méthode en passant une valeur incorrecte. En conséquence, nous verrons le message d'erreur :
<?php
$student->setName(''); // erreur
?>
Dans la classe User, créez
un getter et un setter pour l'âge.
Dans la classe Employee, surchargez
le setter de l'âge et ajoutez-y
une vérification que l'âge est compris
entre 18 et 65 ans.