Costruttore nell'ereditarietà in OOP in PHP

Nell'ereditarietà è possibile sovrascrivere il costruttore del genitore. Vediamo con un esempio. Supponiamo di avere la seguente classe genitore:

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

Supponiamo che dalla classe genitore erediti la seguente classe:

php<?php
  class Student extends User {
    
  }
?>

Supponiamo di voler estendere il costruttore nella classe figlia, aggiungendovi parametri aggiuntivi:

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      
    }
  }
?>

In questo caso dobbiamo obbligatoriamente richiamare come prima riga il costruttore del genitore tramite parent::__construct():

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      parent::__construct($name, $surn);
    }
  }
?>

Il comando parent::__construct() è in sostanza il costruttore del genitore. Pertanto passiamogli i parametri richiesti:

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      parent::__construct($name, $surn);
    }
  }
?>

Ora nel figlio l'anno di corso scriviamolo nella sua proprietà del figlio:

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      parent::__construct($name, $surn);
      $this->year = $year;
    }
  }
?>

Creiamo un getter per l'anno di corso:

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      parent::__construct($name, $surn);
      $this->year = $year;
    }
    
    public function getYear() {
      return $this->year;
    }
  }
?>
Задание 1

Supponiamo che la classe Employee erediti dalla classe User di questa lezione.

Задание 2

Sovrascrivi nella classe Employee il costruttore del genitore, aggiungendovi un parametro con l'età e lo stipendio.

Задание 3

Crea i getter per l'età e lo stipendio.