Proprietà private nell'ereditarietà in OOP in PHP
Le proprietà private non vengono ereditate. Ma le classi figlie possono manipolarle tramite i metodi pubblici della classe genitore. Vediamo come funziona nella pratica. Supponiamo di avere la seguente classe genitore con una proprietà privata e i suoi getter e setter:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Supponiamo che dalla classe genitore erediti la seguente classe figlia:
<?php
class Student extends User {
}
?>
Creiamo un oggetto della classe figlia:
<?php
$student = new Student;
?>
Utilizziamo il metodo della classe genitore per impostare la sua proprietà privata:
<?php
$student->setName('john');
?>
Utilizziamo il metodo della classe genitore per leggere la sua proprietà privata:
<?php
$name = $student->getName();
echo $name;
?>
Data la seguente classe genitore:
<?php
class User {
private $name;
private $surn;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
public function setSurn($surn) {
$this->surn = $surn;
}
public function getSurn() {
return $this->surn;
}
}
?>
Crea una classe Employee,
che erediti da questo genitore.
Crea un oggetto della classe Employee
e richiama i setter e getter ereditati.
Nella classe Employee crea
il seguente metodo:
<?php
public function getFull() {
return $this->name . ' ' . $this->surn;
}
?>
Verifica che il codice del metodo porti a un errore.