Yksityiset menetelmät perinnässä OOP:ssa PHP:ssä
Yksityisiä menetelmiä ei periydy. Tämä on tehty tarkoituksella, jotta kapselointia ei rikota. Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava vanhemman luokka, jossa on yksityinen menetelmä:
<?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);
}
}
?>
Oletetaan, että vanhemmasta luokasta perii seuraava luokka:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Oletetaan, että jälkeläinen haluaa käyttää vanhemman yksityistä menetelmää. PHP ei salli tätä ja antaa virheen:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // tulee virhe
}
}
?>
Kokeile luokassa Employee
käyttää vanhemman yksityistä menetelmää.