Metode private în moștenirea OOP în PHP
Metodele private nu sunt moștenite. Aceasta este făcută în mod intenționat, pentru a nu încălca încapsularea. Să ne uităm la un exemplu. Să presupunem că avem următoarea clasă părinte cu o metodă privată:
<?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);
}
}
?>
Să presupunem că din clasa părinte moștenește următoarea clasă:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Să presupunem că clasa copil dorește să utilizeze metoda privată a părintelui. PHP nu va permite acest lucru și va afișa o eroare:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // va fi eroare
}
}
?>
Încercați în clasa Employee
să utilizați metoda privată
a părintelui.