Privātās metodes mantojumā OOP PHP
Privātās metodes netiek mantotas. Tas ir izdarīts ar nolūku, lai nepārkāptu inkapsulāciju. Apskatīsim piemērā. Pieņemsim, ka mums ir šāda vecāku klase ar privātu metodi:
<?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);
}
}
?>
Pieņemsim, ka no vecāku klases manto šāda klase:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Pieņemsim, ka pēctecis vēlas izmantot vecāku privāto metodi. PHP to nepieļaus un izmestīs kļūdu:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // radīsies kļūda
}
}
?>
Mēģiniet klasē Employee
izmantot vecāku privāto metodi.