Konštruktor pri dedení v OOP v PHP
Pri dedení je možné prepísať konštruktor rodiča. Pozrime sa na príklad. Predpokladajme, že máme nasledujúcu triedu rodiča:
<?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;
}
}
?>
Predpokladajme, že z rodičovskej triedy dedí nasledujúca trieda:
<?php
class Student extends User {
}
?>
Predpokladajme, že v triede-potomkovi chceme rozšíriť konštruktor pridaním ďalších parametrov:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
V tomto prípade musíme v prvom riadku
vyvolať konštruktor rodiča pomocou
parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Príkaz parent::__construct() je v
podstate konštruktorom rodiča. Preto
do neho odovzdajme požadované parametre:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Teraz v potomkovi zapíšme rok štúdia do vlastnej vlastnosti potomka:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Vytvorme getter pre rok štúdia:
<?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;
}
}
?>
Nech trieda Employee dedí
od triedy User z tejto
lekcie.
Prepíšte v triede Employee
konštruktor rodiča pridaním parametrov
s vekom a platom.
Vytvorte gettre pre vek a plat.