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<?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<?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<?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<?php
  $student = new Student;
?>

Ahora invoquemos nuestro método, pasándole un valor correcto:

php<?php
  $student->setName('john');
?>

Y ahora invoquemos el método, pasándole un valor incorrecto. Como resultado veremos una excepción lanzada:

php<?php
  $student->setName(''); // error
?>
Задание 1

En la clase User haga un getter y un setter para la edad.

Задание 2

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.