Constructor en herencia en POO en PHP
En la herencia se puede sobrescribir el constructor del padre. Veamos un ejemplo. Supongamos que tenemos la siguiente clase padre:
<?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;
}
}
?>
Supongamos que de la clase padre hereda la siguiente clase:
<?php
class Student extends User {
}
?>
Supongamos que queremos en la clase hija ampliar el constructor, añadiendo parámetros adicionales:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
En este caso necesitamos obligatoriamente
llamar en la primera línea al constructor
del padre mediante parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
El comando parent::__construct() en esencia es
el constructor del padre. Por lo tanto
pasemos a él los parámetros requeridos:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Ahora en el hijo el año de estudio lo escribimos en su propia propiedad del hijo:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Hagamos un getter para el año de estudio:
<?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;
}
}
?>
Supongamos que la clase Employee hereda
de la clase User de esta
lección.
Sobrescriba en la clase Employee
el constructor del padre, añadiéndole
parámetros con la edad y el salario.
Haga getters para la edad y el salario.