Llamar a un método sobrescrito en POO en PHP

Al sobrescribir, la clase hija pierde acceso al método sobrescrito de la clase padre. Sin embargo, es posible acceder a él de todas formas. Esto se hace usando la palabra clave parent, que hace referencia a la clase padre.

Veamos un ejemplo en el que podríamos necesitar acceso al método de la clase padre. 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;
    }
  }
?>

Supongamos que en la clase hija sobrescribimos el método del padre:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'student name error';
      }
    }
  }
?>

Se puede notar que en el método sobrescrito, al cumplirse la condición, se ejecuta el código del método de la clase padre. Resulta una duplicación de código innecesaria.

Podemos eliminarla si llamamos al método del padre. Hagámoslo:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // método del padre
      } else {
        echo 'student name error';
      }
    }
  }
?>
Задание 1

Tenemos el siguiente código:

php<?php
  class User {
    private $age;
    
    public function setAge($age) {
      if ($age >= 0) {
        $this->age = $age;
      } else {
        echo 'need age more 0';
      }
    }
  }
  
  class Employee extends User {
    public function setAge($age) {
      if ($age <= 120) {
        if ($age >= 0) {
          $this->age = $age;
        } else {
          echo 'need age more 0';
        }
      } else {
        echo 'need age less 120';
      }
    }
  }
?>

En la clase Employee, corrija simplifique el setter de la edad, utilizando el método original del padre.