Privata metoder vid arv i OOP i PHP
Privata metoder ärvs inte. Detta är gjort med flit för att inte bryta mot inkapsling. Låt oss titta på ett exempel. Antag att vi har följande föräldraklass med en privat metod:
<?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);
}
}
?>
Antag att följande klass ärver från föräldraklassen:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Om avkomman vill använda förälderns privata metod, kommer PHP inte tillåta detta och kommer att ge ett fel:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // kommer att ge fel
}
}
?>
Försök i klassen Employee
att använda en privat metod från
föräldern.