Sobrescritura de métodos padre en POO en PHP
Una clase hija puede sobrescribir un método del padre, creando un método con el mismo nombre. Veamos un ejemplo. Supongamos que tenemos la siguiente clase padre:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Creemos un método homónimo en la clase hija:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Generalmente, la sobrescritura de métodos padre se necesita para cambiar o complementar el comportamiento de ese método. En nuestro caso, agreguemos una verificación de la longitud del nombre:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Asegurémonos de que se invoca exactamente el método sobrescrito. Primero creemos un objeto de la clase hija:
<?php
$student = new Student;
?>
Ahora invoquemos nuestro método, pasándole un valor correcto:
<?php
$student->setName('john');
?>
Y ahora invoquemos el método, pasándole un valor incorrecto. Como resultado veremos una excepción lanzada:
<?php
$student->setName(''); // error
?>
En la clase User haga
un getter y un setter para la edad.
En la clase Employee sobrescriba
el setter de edad y haga en él
una verificación de que la edad esté
entre 18 y 65 años.