Конструктор при наследовању у ООП у 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
конструктор родитеља, додајући у њега
параметар са годинама и платом.
Направите гетере за године и плату.