Construtor na herança em OOP no PHP
Na herança, é possível sobrescrever o construtor da classe pai. Vamos ver um exemplo. Suponha que temos a seguinte classe pai:
<?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;
}
}
?>
Suponha que a seguinte classe herda da classe pai:
<?php
class Student extends User {
}
?>
Suponha que queremos estender o construtor na classe filha, adicionando parâmetros adicionais a ele:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
Neste caso, precisamos obrigatoriamente
chamar o construtor da classe pai
na primeira linha usando parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
O comando parent::__construct() é essencialmente
o construtor da classe pai. Portanto,
vamos passar os parâmetros necessários para ele:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Agora, na classe filha, vamos atribuir o ano de ingresso à sua própria propriedade na classe filha:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Vamos criar um getter para o ano de ingresso:
<?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;
}
}
?>
Suponha que a classe Employee herda
da classe User desta
lição.
Sobrescreva o construtor da classe pai na classe Employee,
adicionando a ele um parâmetro
com a idade e o salário.
Crie getters para a idade e o salário.