Apelarea metodei suprascrise în OOP în PHP

La suprascriere, clasa derivată pierde accesul la metoda suprascrisă a părintelui. Cu toate acestea, accesul la ea poate fi obținut oricum. Acest lucru se face cu ajutorul cuvântului cheie parent, care indică clasa părinte.

Să ne uităm la un exemplu când am putea avea nevoie de acces la metoda părintelui. Să presupunem că avem următoarea clasă-părinte:

php<?php
  class User {
    private $name;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
  }
?>

Să presupunem că în clasa-derivată am suprascris metoda părintelui:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'student name error';
      }
    }
  }
?>

Se poate observa că în metoda suprascrisă la îndeplinirea condiției, de fapt, se execută codul metodei părintelui. Rezultă o duplicare inutilă a codului.

Putem scăpa de ea dacă apelăm metoda părintelui. Să facem acest lucru:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // metoda părintelui
      } else {
        echo 'student name error';
      }
    }
  }
?>
Задание 1

Este dat următorul cod:

php<?php
  class User {
    private $age;
    
    public function setAge($age) {
      if ($age >= 0) {
        $this->age = $age;
      } else {
        echo 'need age more 0';
      }
    }
  }
  
  class Employee extends User {
    public function setAge($age) {
      if ($age <= 120) {
        if ($age >= 0) {
          $this->age = $age;
        } else {
          echo 'need age more 0';
        }
      } else {
        echo 'need age less 120';
      }
    }
  }
?>

În clasa Employee corectați simplificați setter-ul vârstei, utilizând metoda originală a părintelui.