Приватные методы при наследовании в ООП в PHP
Приватные методы не наследуются. Это сделано специально, чтобы не нарушать инкапсуляцию. Давайте посмотрим на примере. Пусть у нас есть следующий родительский класс с приватным методом:
<?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);
}
}
?>
Пусть от родительского класса наследует следующий класс:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Пусть потомок хочет воспользоваться приватным методом родителя. PHP это не разрешит и выдаст ошибку:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // будет ошибка
}
}
?>
Попробуйте в классе Employee
воспользоваться приватным методом
родителя.