Zasebne metode pri dedovanju v OOP v PHP
Zasebne metode se ne dedujejo. To je narejeno namenoma, da ne bi motili inkapsulacije. Poglejmo si na primeru. Recimo, da imamo naslednji nadrejeni razred z zasebno metodo:
<?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);
}
}
?>
Recimo, da od nadrejenega razreda deduje naslednji razred:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Recimo, da potomec želi uporabiti zasebno metodo nadrejenega razreda. PHP tega ne bo dovolil in bo izpisal napako:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // bo napaka
}
}
?>
Poskusite v razredu Employee
uporabiti zasebno metodo
nadrejenega razreda.