Канструктар пры наследаванні ў ААП у PHP
Пры наследаванні можна пераазначаць канструктар бацькі. Давайце паглядзім на прыкладзе. Хай у нас ёсць наступны клас бацькі:
<?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;
}
}
?>
Хай ад бацькоўскага класа наследуе наступны клас:
<?php
class Student extends User {
}
?>
Хай мы хочам у класе-нашчадку пашырыць канструктар, дадаўшы ў яго дадатковыя параметры:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
У гэтым выпадку нам абавязкова трэба
першай радком выклікаць канструктар
бацькі праз parent::__construct()
:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Каманда parent::__construct()
па суці з'яўляецца
канструктарам бацькі. Таму
перададзім у яго патрабуемыя параметры:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Цяпер у нашчадку год навучання запішам у ўласную ўласцівасць нашчадка:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Зробім гетар для года навучання:
<?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;
}
}
?>
Хай клас Employee
наследуе
ад класа User
з гэтага
ўроку.
Пераазначце ў класе Employee
канструктар бацькі, дадаўшы ў яго
параметр з узростам і зарплатай.
Зрабіце гетары для ўзросту і зарплаты.