Κλήση υπερκαλυμμένης μεθόδου στην ΑΑΠ στην PHP

Κατά την υπερκάλυψη, ο απόγονος χάνει την πρόσβαση στην υπερκαλυμμένη μέθοδο του γονέα. Ωστόσο, είναι ακόμα δυνατόν να αποκτήσει πρόσβαση σε αυτήν. Αυτό γίνεται χρησιμοποιώντας τη λέξη-κλειδί parent, που δείχνει towards the parent class.

Ας δούμε ένα παράδειγμα όπου μπορεί να χρειαστεί πρόσβαση στη μέθοδο του γονέα. Ας υποθέσουμε ότι έχουμε την ακόλουθη κλάση-γονέα:

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

Ας υποθέσουμε ότι στην κλάση-απόγονο υπερκαλύψαμε τη μέθοδο του γονέα:

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

Μπορεί να παρατηρηθεί ότι στην υπερκαλυμμένη μέθοδο, όταν ικανοποιείται η συνθήκη, πρακτικά εκτελείται ο κώδικας της μεθόδου του γονέα. Αποτελεί λοιπόν επαναλαμβανόμενο κώδικα.

Μπορούμε να τον αφαιρέσουμε, εάν καλέσουμε τη μέθοδο του γονέα. Ας το κάνουμε:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // μέθοδος γονέα
      } else {
        echo 'student name error';
      }
    }
  }
?>
Задание 1

Δίνεται ο ακόλουθος κώδικας:

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

Στην κλάση Employee διορθώστε απλοποιήστε τον setter ηλικίας, χρησιμοποιώντας την αρχική μέθοδο του γονέα.