Konstruktor pada Pewarisan di OOP dalam PHP

Pada pewarisan, kita dapat mengoverride konstruktor parent. Mari kita lihat pada contoh. Misalkan kita memiliki kelas parent berikut:

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

Misalkan kelas parent diwarisi oleh kelas berikut:

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

Misalkan kita ingin dalam kelas turunan memperluas konstruktor, menambahkan parameter tambahan ke dalamnya:

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

Dalam hal ini, kita harus memanggil konstruktor parent pada baris pertama melalui parent::__construct():

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

Perintah parent::__construct() pada dasarnya adalah konstruktor parent. Oleh karena itu kita berikan parameter yang diperlukan ke dalamnya:

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

Sekarang di kelas turunan, tahun pembelajaran simpan ke dalam properti milik kelas turunan sendiri:

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

Mari buat getter untuk tahun pembelajaran:

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

Misalkan kelas Employee mewarisi dari kelas User dari pelajaran ini.

Задание 2

Override dalam kelas Employee konstruktor parent, menambahkan ke dalamnya parameter dengan usia dan gaji.

Задание 3

Buat getter untuk usia dan gaji.