Privátní metody při dědění v OOP v PHP
Privátní metody nejsou děděny. To je záměrně navrženo, aby nebylo porušováno zapouzdření. Podívejme se na příklad. Předpokládejme, že máme následující rodičovskou třídu s privátní metodou:
<?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);
}
}
?>
Předpokládejme, že z rodičovské třídy dědí následující třída:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Předpokládejme, že potomek chce použít privátní metodu rodiče. PHP to nedovolí a vypíše chybu:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // bude chyba
}
}
?>
Zkuste ve třídě Employee
použít privátní metodu
rodiče.