Konstruktor vid arv i OOP i PHP

Vid arv är det möjligt att åsidosätta förälderns konstruktor. Låt oss titta på ett exempel. Antag att vi har följande förälderklass:

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

Antag att följande klass ärver från förälderklassen:

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

Antag att vi vill utöka konstruktorn i barnklassen genom att lägga till ytterligare parametrar:

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

I det här fallet måste vi på första raden anropa förälderns konstruktor via parent::__construct():

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

Kommandot parent::__construct() är i princip förälderns konstruktor. Därför skickar vi in de nödvändiga parametrarna:

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

Nu i barnklassen skriver vi studieåret till barnets egen egenskap:

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

Låt oss skapa en getter för studieåret:

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

Antag att klassen Employee ärver från klassen User från denna lektion.

Задание 2

Åsidosätt i klassen Employee förälderns konstruktor genom att lägga till parametrar för ålder och lön.

Задание 3

Skapa getters för ålder och lön.