Konstruktori perinnässä OOP PHP:ssä
Perinnässä voit ylikirjoittaa vanhemman konstruktorin. Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava vanhemman luokka:
<?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;
}
}
?>
Oletetaan, että vanhemman luokasta perii seuraava luokka:
<?php
class Student extends User {
}
?>
Oletetaan, että haluamme jälkeläisluokassa laajentaa konstruktoria lisäämällä siihen lisäparametreja:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
Tässä tapauksessa meidän on välttämättä
kutsuttava ensimmäisellä rivillä vanhemman konstruktoria
komennolla parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Komento parent::__construct() on olennaisesti
vanhemman konstruktori. Siksi
annamme sille vaaditut parametrit:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Nyt jälkeläisessä opintovuosi kirjoitetaan jälkeläisen omaan ominaisuuteen:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Tehdään getteri opintovuodelle:
<?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;
}
}
?>
Oletetaan, että luokka Employee perii
luokasta User tästä
oppitunnista.
Ylikirjoita luokassa Employee
vanhemman konstruktori lisäämällä siihen
parametrin iälle ja palkalle.
Tee getterit iälle ja palkalle.