Constructor la moștenire în OOP în PHP

La moștenire se poate suprascrie constructorul părintelui. Să analizăm un exemplu. Să presupunem că avem următoarea clasă părinte:

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

Să presupunem că din clasa părinte moștenește următoarea clasă:

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

Să presupunem că vrem în clasa-descendent să extindem constructorul, adăugând în el parametri suplimentari:

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

În acest caz trebuie neapărat să apelăm prima linie constructorul părintelui prin parent::__construct():

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

Comanda parent::__construct() în esență este constructorul părintelui. De aceea să-i transmitem parametrii necesari:

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

Acum în descendent anul de studiu îl vom scrie în proprietatea sa a descendentului:

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

Să facem un getter pentru anul de studiu:

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

Să presupunem că clasa Employee moștenește din clasa User din această lecție.

Задание 2

Suprascrieți în clasa Employee constructorul părintelui, adăugând în el parametrul cu vârsta și salariul.

Задание 3

Faceți getteri pentru vârstă și salariu.