Параметри в методите на интерфейси в ООП в PHP

При описване на методи в интерфейси е необходимо да се указват не само имената на самите методи, но и приеманите от тях параметри.

Нека да разгледаме пример. Нека имаме интерфейс iMath, описващ клас за математически операции събиране, изваждане, умножение и деление. Нека този интерфейс изглежда така:

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

В момента методите на нашия интерфейс не приемат никакви параметри. И всъщност методите на класа, който ще имплементира този интерфейс, също не трябва да приемат параметри, в противен случай ще има грешка.

Нека укажем параметрите на методите в нашия интерфейс:

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);
  }
?>

Нека сега напишем имплементацията на нашия интерфейс:

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;
    }
  }
?>

Ако се опитаме в нашия клас да зададем различен брой параметри - при нас това просто няма да се получи: PHP ще даде грешка. По този начин ние няма да можем нито случайно да забравим някой параметър, нито случайно да добавим излишен.

Задание 1

Нека ни е даден такъв интерфейс iUser:

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

Направете клас User, който ще имплементира дадения интерфейс.