Constructor la moștenire în OOP în PHP
La moștenire se poate suprascrie constructorul părintelui. Să analizăm un exemplu. Să presupunem că avem următoarea clasă părinte:
<?php
class User {
private $name;
private $surn;
public function __construct($name, $surn) {
$this->name = $name;
$this->surn = $surn;
}
public function getName() {
return $this->name;
}
public function getSurn() {
return $this->surn;
}
}
?>
Să presupunem că din clasa părinte moștenește următoarea clasă:
<?php
class Student extends User {
}
?>
Să presupunem că vrem în clasa-descendent să extindem constructorul, adăugând în el parametri suplimentari:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
În acest caz trebuie neapărat
să apelăm prima linie constructorul
părintelui prin parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Comanda parent::__construct() în esență este
constructorul părintelui. De aceea
să-i transmitem parametrii necesari:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Acum în descendent anul de studiu îl vom scrie în proprietatea sa a descendentului:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Să facem un getter pentru anul de studiu:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
public function getYear() {
return $this->year;
}
}
?>
Să presupunem că clasa Employee moștenește
din clasa User din această
lecție.
Suprascrieți în clasa Employee
constructorul părintelui, adăugând în el
parametrul cu vârsta și salariul.
Faceți getteri pentru vârstă și salariu.