PHP'de OOP'de Kalıtımda Private Metotlar
Private metotlar kalıtım yoluyla aktarılmaz. Bu, kapsüllemeyi ihlal etmemek için özellikle yapılmıştır. Bir örnek üzerinden inceleyelim. Aşağıdaki gibi private bir metoda sahip bir ebeveyn sınıfımız olduğunu varsayalım:
<?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);
}
}
?>
Ebeveyn sınıftan aşağıdaki sınıfın türediğini varsayalım:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Alt sınıfın, ebeveynin private metodunu kullanmak istediğini varsayalım. PHP buna izin vermeyecek ve bir hata verecektir:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // hata verecek
}
}
?>
Employee sınıfında ebeveynin private metodunu
kullanmayı deneyin.