Chamando um método sobrescrito em POO em PHP

Ao sobrescrever um método, a classe filha perde acesso ao método sobrescrito da classe pai. No entanto, ainda é possível acessá-lo. Isso é feito usando a palavra-chave parent, que aponta para a classe pai.

Vamos ver um exemplo de quando podemos precisar de acesso ao método da classe pai. Suponha que temos a seguinte classe pai:

php<?php
  class User {
    private $name;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
  }
?>

Suponha que na classe filha sobrescrevemos o método da classe pai:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'erro no nome do estudante';
      }
    }
  }
?>

Pode-se notar que no método sobrescrito, quando a condição é atendida, essencialmente o código do método da classe pai é executado. Isso resulta em uma duplicação desnecessária de código.

Podemos nos livrar disso chamando o método da classe pai. Vamos fazer isso:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // método da classe pai
      } else {
        echo 'erro no nome do estudante';
      }
    }
  }
?>
Задание 1

Dado o seguinte código:

php<?php
  class User {
    private $age;
    
    public function setAge($age) {
      if ($age >= 0) {
        $this->age = $age;
      } else {
        echo 'precisa de idade maior que 0';
      }
    }
  }
  
  class Employee extends User {
    public function setAge($age) {
      if ($age <= 120) {
        if ($age >= 0) {
          $this->age = $age;
        } else {
          echo 'precisa de idade maior que 0';
        }
      } else {
        echo 'precisa de idade menor que 120';
      }
    }
  }
?>

Na classe Employee, corrija e simplifique o setter de idade, usando o método original da classe pai.