Konstruktor prilikom nasleđivanja u OOP u PHP-u

Prilikom nasleđivanja možete redefinisati konstruktor roditelja. Pogledajmo na primeru. Pretpostavimo da imamo sledeću roditeljsku klasu:

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

Pretpostavimo da od roditeljske klase nasleđuje sledeća klasa:

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

Pretpostavimo da u klasi-potomku želimo da proširimo konstruktor, dodajući dodatne parametre:

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

U ovom slučaju moramo obavezno prvom linijom pozvati konstruktor roditelja pomoću parent::__construct():

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

Komanda parent::__construct() u suštini je konstruktor roditelja. Stoga, prosledimo mu tražene parametre:

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

Sada u potomku godinu studija upisaćemo u svoje svojstvo potomka:

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

Napravimo getter za godinu studija:

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

Pretpostavimo da klasa Employee nasleđuje od klase User iz ove lekcije.

Задание 2

Redefinišite u klasi Employee konstruktor roditelja, dodajući u njega parametar za godine i platu.

Задание 3

Napravite gettere za godine i platu.