Private Methoden bei Vererbung in OOP in PHP
Private Methoden werden nicht vererbt. Dies ist absichtlich so gestaltet, um den Datenkapselung nicht zu verletzen. Schauen wir uns ein Beispiel an. Nehmen wir an, wir haben die folgende Elternklasse mit einer privaten Methode:
<?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);
}
}
?>
Nehmen wir an, von der Elternklasse erbt die folgende Klasse:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Nehmen wir an, die Kindklasse möchte die private Methode der Elternklasse verwenden. PHP erlaubt dies nicht und gibt einen Fehler aus:
<?php
class Student extends User {
private $surn;
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->capeFirst($this->surn); // Fehler wird auftreten
}
}
?>
Versuchen Sie, in der Klasse Employee
die private Methode der Elternklasse
zu verwenden.