Metodi privati nell'ereditarietà in OOP in PHP
I metodi privati non vengono ereditati. Questo è fatto appositamente per non violare l'incapsulamento. Diamo un'occhiata a un esempio. Supponiamo di avere la seguente classe genitore con un metodo privato:
<?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);
}
}
?>
Supponiamo che dalla classe genitore erediti la seguente classe:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Supponiamo che la classe figlia voglia utilizzare il metodo privato del genitore. PHP non lo permetterà e darà un errore:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // darà errore
}
}
?>
Provate nella classe Employee
a utilizzare il metodo privato
del genitore.