Gọi phương thức ghi đè trong OOP PHP

Khi ghi đè, lớp con mất quyền truy cập vào phương thức đã bị ghi đè của lớp cha. Tuy nhiên, vẫn có thể truy cập nó. Điều này được thực hiện bằng từ khóa parent, trỏ đến lớp cha.

Hãy xem một ví dụ khi nào chúng ta có thể cần truy cập đến phương thức của lớp cha. Giả sử chúng ta có lớp cha sau:

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

Giả sử chúng ta trong lớp con đã ghi đè phương thức của lớp cha:

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

Có thể nhận thấy rằng trong phương thức đã ghi đè khi điều kiện được thỏa mãn thực chất là thực thi mã của phương thức lớp cha. Điều này dẫn đến việc lặp mã không cần thiết.

Có thể loại bỏ nó bằng cách gọi phương thức của lớp cha. Hãy thực hiện điều đó:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // phương thức của lớp cha
      } else {
        echo 'student name error';
      }
    }
  }
?>
Задание 1

Cho đoạn mã sau:

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

Trong lớp Employee hãy sửa và đơn giản hóa phương thức thiết lập tuổi, sử dụng phương thức gốc của lớp cha.