Konstruktor pri dedovanju v OOP v PHP
Pri dedovanju je mogoče preglasiti konstruktor starša. Poglejmo si primer. Imejmo naslednji razred starš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;
}
}
?>
Naj od starševskega razreda deduje naslednji razred:
<?php
class Student extends User {
}
?>
Recimo, da želimo v razredu-potomcu razširiti konstruktor z dodajanjem dodatnih parametrov:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
V tem primeru moramo obvezno
v prvi vrstici poklicati konstruktor
starša z parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Ukaz parent::__construct() je v bistvu
konstruktor starša. Zato
mu posredujemo zahtevane parametre:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Sedaj v potomcu leto študija zapišimo v lastno lastnost potomca:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Naredimo getter za leto študija:
<?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;
}
}
?>
Naj razred Employee deduje
od razreda User iz te
lekcije.
Preglasite v razredu Employee
konstruktor starša, tako da mu dodate
parameter s starostjo in plačo.
Naredite getterje za starost in plačo.