Konstruktor při dědění v OOP v PHP
Při dědění lze přepsat konstruktor rodiče. Podívejme se na příklad. Předpokládejme, že máme následující třídu rodiče:
<?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;
}
}
?>
Předpokládejme, že z rodičovské třídy dědí následující třída:
<?php
class Student extends User {
}
?>
Předpokládejme, že chceme v potomní třídě rozšířit konstruktor přidáním dodatečných parametrů:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
V tomto případě musíme
jako první řádek zavolat konstruktor
rodiče pomocí parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Příkaz parent::__construct() je v podstatě
konstruktorem rodiče. Proto
do něj předáme požadované parametry:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Nyní v potomkovi nastavíme rok studia do vlastní vlastnosti potomka:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Vytvořme getter pro rok studia:
<?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;
}
}
?>
Předpokládejme, že třída Employee dědí
z třídy User z této
lekce.
Přepište v třídě Employee
konstruktor rodiče přidáním
parametru s věkem a platem.
Vytvořte gettery pro věk a plat.