Konstruktor przy dziedziczeniu w OOP w PHP
Przy dziedziczeniu można przesłaniać konstruktor rodzica. Spójrzmy na przykład. Załóżmy, że mamy następującą klasę rodzica:
<?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;
}
}
?>
Załóżmy, że z klasy rodzica dziedziczy następująca klasa:
<?php
class Student extends User {
}
?>
Załóżmy, że chcemy w klasie-potomku rozszerzyć konstruktor, dodając do niego dodatkowe parametry:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
W tym przypadku musimy koniecznie
w pierwszej linii wywołać konstruktor
rodzica za pomocą parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Polecenie parent::__construct() w istocie jest
konstruktorem rodzica. Dlatego
przekażmy do niego wymagane parametry:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Teraz w potomku rok nauki zapiszmy we własnej właściwości potomka:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Zróbmy getter dla roku nauki:
<?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;
}
}
?>
Załóżmy, że klasa Employee dziedziczy
z klasy User z tej
lekcji.
Przesłoń w klasie Employee
konstruktor rodzica, dodając do niego
parametr z wiekiem i wynagrodzeniem.
Zrób gettery dla wieku i wynagrodzenia.