Konstruktor pada Pewarisan di OOP dalam PHP
Pada pewarisan, kita dapat mengoverride konstruktor parent. Mari kita lihat pada contoh. Misalkan kita memiliki kelas parent berikut:
<?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;
}
}
?>
Misalkan kelas parent diwarisi oleh kelas berikut:
<?php
class Student extends User {
}
?>
Misalkan kita ingin dalam kelas turunan memperluas konstruktor, menambahkan parameter tambahan ke dalamnya:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
Dalam hal ini, kita harus
memanggil konstruktor
parent pada baris pertama melalui parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Perintah parent::__construct() pada dasarnya adalah
konstruktor parent. Oleh karena itu
kita berikan parameter yang diperlukan ke dalamnya:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Sekarang di kelas turunan, tahun pembelajaran simpan ke dalam properti milik kelas turunan sendiri:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Mari buat getter untuk tahun pembelajaran:
<?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;
}
}
?>
Misalkan kelas Employee mewarisi
dari kelas User dari
pelajaran ini.
Override dalam kelas Employee
konstruktor parent, menambahkan ke dalamnya
parameter dengan usia dan gaji.
Buat getter untuk usia dan gaji.