Private metoder ved arv i OOP i PHP
Private metoder arves ikke. Dette er gjort med vilje for ikke å bryte inkapsling. La oss se på et eksempel. La oss si at vi har følgende foreldreklasse med en privat metode:
<?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);
}
}
?>
La oss si at følgende klasse arver fra foreldreklassen:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
La oss si at avkommet ønsker å bruke forelderens private metode. PHP vil ikke tillate dette og vil gi en feil:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // vil gi feil
}
}
?>
Prøv i klassen Employee
å bruke forelderens private metode.