Memanggil Metode yang Dioverride dalam OOP di PHP

Saat override, child class kehilangan akses ke metode parent yang dioverride. Namun, akses ke metode tersebut tetap bisa didapatkan. Hal ini dilakukan dengan menggunakan kata kunci parent, yang merujuk ke parent class.

Mari kita lihat contoh kapan kita mungkin memerlukan akses ke metode parent. Misalkan kita memiliki parent class berikut:

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

Misalkan kita di child class mengoverride metode parent:

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

Dapat dilihat bahwa dalam metode yang dioverride saat kondisi terpenuhi, pada dasarnya kode metode parent yang dijalankan. Terjadi duplikasi kode yang tidak perlu.

Kita dapat menghilangkannya dengan memanggil metode parent. Mari kita lakukan:

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

Diberikan kode berikut:

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

Di class Employee, perbaiki dan sederhanakan setter usia, dengan menggunakan metode asli parent.