Parâmetros em métodos de interfaces em POO em PHP

Ao descrever métodos em interfaces, é necessário especificar não apenas os nomes dos próprios métodos, mas também os parâmetros que eles aceitam.

Vamos ver um exemplo. Suponha que temos a interface iMath, que descreve uma classe para operações matemáticas de adição, subtração, multiplicação e divisão. Vamos supor que esta interface seja assim:

iMath.php<?php
  interface iMath
  {
    public function sum();
    public function subtract();
    public function multiply();
    public function divide();
  }
?>

Atualmente, os métodos da nossa interface não aceitam nenhum parâmetro. E, na verdade, os métodos da classe que implementará esta interface também não deverão aceitar parâmetros, caso contrário, haverá um erro.

Vamos especificar os parâmetros dos métodos na nossa interface:

iMath.php<?php
  interface iMath
  {
    public function sum($a, $b);
    public function subtract($a, $b);
    public function multiply($a, $b);
    public function divide($a, $b);
  }
?>

Agora, vamos escrever a implementação da nossa interface:

Math.php<?php
  class Math implements iMath
  {
    public function sum($a, $b)
    {
      return $a + $b;
    }
    
    public function subtract($a, $b)
    {
      return $a - $b;
    }
    
    public function multiply($a, $b)
    {
      return $a * $b;
    }
    
    public function divide($a, $b)
    {
      return $a / $b;
    }
  }
?>

Se tentarmos definir uma quantidade diferente de parâmetros em nossa classe - simplesmente não conseguiremos: o PHP retornará um erro. Dessa forma, não poderemos nem esquecer acidentalmente algum parâmetro, nem adicionar um extra por acidente.

Задание 1

Suponha que temos a seguinte interface iUser:

php<?php
  interface iUser
  {
    public function setName($name);
    public function getName();
    public function setAge($age);
    public function getAge();
  }
?>

Crie uma classe User que irá implementar esta interface.