Métodos privados en la herencia de POO en PHP
Los métodos privados no se heredan. Esto se hace específicamente para no violar el encapsulamiento. Veamos un ejemplo. Supongamos que tenemos la siguiente clase padre con un método privado:
<?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);
}
}
?>
Supongamos que la siguiente clase hereda de la clase padre:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Supongamos que la clase hija quiere usar el método privado del padre. PHP no permitirá esto y arrojará un error:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // habrá un error
}
}
?>
Intente en la clase Employee
utilizar el método privado
del padre.