Konstruktori perinnässä OOP PHP:ssä

Perinnässä voit ylikirjoittaa vanhemman konstruktorin. Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava vanhemman luokka:

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

Oletetaan, että vanhemman luokasta perii seuraava luokka:

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

Oletetaan, että haluamme jälkeläisluokassa laajentaa konstruktoria lisäämällä siihen lisäparametreja:

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

Tässä tapauksessa meidän on välttämättä kutsuttava ensimmäisellä rivillä vanhemman konstruktoria komennolla parent::__construct():

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

Komento parent::__construct() on olennaisesti vanhemman konstruktori. Siksi annamme sille vaaditut parametrit:

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

Nyt jälkeläisessä opintovuosi kirjoitetaan jälkeläisen omaan ominaisuuteen:

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

Tehdään getteri opintovuodelle:

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

Oletetaan, että luokka Employee perii luokasta User tästä oppitunnista.

Задание 2

Ylikirjoita luokassa Employee vanhemman konstruktori lisäämällä siihen parametrin iälle ja palkalle.

Задание 3

Tee getterit iälle ja palkalle.