Méthodes privées lors de l'héritage en POO en PHP
Les méthodes privées ne sont pas héritées. Ceci est fait intentionnellement pour ne pas violer l'encapsulation. Regardons un exemple. Supposons que nous ayons la classe parente suivante avec une méthode privée :
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->capeFirst($this->name);
}
private function capeFirst($str) {
return ucfirst($str);
}
}
?>
Supposons que la classe suivante hérite de la classe parente :
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Supposons que la classe enfant veuille utiliser la méthode privée du parent. PHP ne le permettra pas et générera une erreur :
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // générera une erreur
}
}
?>
Essayez dans la classe Employee
d'utiliser la méthode privée
du parent.