Métodos privados na herança em POO em PHP
Métodos privados não são herdados. Isso é feito intencionalmente para não violar o encapsulamento. Vamos ver um exemplo. Suponha que temos a seguinte classe pai com um 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);
}
}
?>
Suponha que a seguinte classe herda da classe pai:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Suponha que a classe filha queira usar o método privado do pai. O PHP não permitirá isso e retornará um erro:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // retornará erro
}
}
?>
Tente na classe Employee
usar o método privado
do pai.