Privát metódusok öröklődéskor az OOP-ban PHP-ben
A privát metódusok nem öröklődnek. Ez szándékosan van így, hogy ne sérüljön az encapsuláció. Nézzünk egy példát. Tegyük fel, hogy a következő szülő osztályunk van privát metódussal:
<?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);
}
}
?>
Tegyük fel, hogy a szülő osztályból örököl a következő osztály:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Tegyük fel, hogy az utód ki szeretné használni a szülő privát metódusát. A PHP ezt nem engedi, és hibát jelez:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // hiba történik
}
}
?>
Próbálja meg az Employee osztályban
használni a szülő privát metódusát.