Prywatne metody przy dziedziczeniu w OOP w PHP
Prywatne metody nie są dziedziczone. Jest to celowe, aby nie naruszać hermetyzacji. Spójrzmy na przykład. Załóżmy, że mamy następującą klasę nadrzędną z metodą prywatną:
<?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);
}
}
?>
Załóżmy, że z klasy nadrzędnej dziedziczy następująca klasa:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Załóżmy, że klasa potomna chce skorzystać z prywatnej metody rodzica. PHP na to nie pozwoli i zwróci błąd:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // będzie błąd
}
}
?>
Spróbuj w klasie Employee
skorzystać z prywatnej metody
rodzica.