Privé methoden bij overerving in OOP in PHP
Privé methoden worden niet overgeërfd. Dit is speciaal zo ontworpen om encapsulatie niet te schenden. Laten we een voorbeeld bekijken. Stel we hebben de volgende ouderklasse met een privé methode:
<?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);
}
}
?>
Stel dat van de ouderklasse de volgende klasse erft:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Stel dat de nakomeling gebruik wil maken van de privé methode van de ouder. PHP zal dit niet toestaan en een fout geven:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // geeft een fout
}
}
?>
Probeer in de klasse Employee
gebruik te maken van de privé methode
van de ouder.