Constructor bij overerving in OOP in PHP
Bij overerving is het mogelijk om de constructor van de ouder te overschrijven. Laten we een voorbeeld bekijken. Stel dat we de volgende ouderklasse hebben:
<?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;
}
}
?>
Stel dat de volgende klasse erven van de ouderklasse:
<?php
class Student extends User {
}
?>
Stel dat we in de nakomelingenklasse de constructor willen uitbreiden door er extra parameters aan toe te voegen:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
In dit geval moeten we verplicht
op de eerste regel de constructor
van de ouder aanroepen via parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
De opdracht parent::__construct() is in feite
de constructor van de ouder. Daarom
geven we hem de vereiste parameters door:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Nu schrijven we in de nakomeling het studiejaar in zijn eigen eigenschap van de nakomeling:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Laten we een getter maken voor het studiejaar:
<?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;
}
}
?>
Stel dat de klasse Employee erven
van de klasse User uit deze
les.
Herschrijf in de klasse Employee
de constructor van de ouder door er
parameters voor leeftijd en salaris aan toe te voegen.
Maak getters voor de leeftijd en het salaris.