Penggantian Kaedah Induk dalam OOP dalam PHP

Kelas anak boleh menggantikan kaedah induk dengan mencipta kaedah dengan nama yang sama. Mari kita lihat pada contoh. Katakan kita mempunyai kelas induk berikut:

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

Mari dalam kelas anak kita cipta kaedah dengan nama yang sama:

php<?php
  class Student extends User {
    public function setName($name) {
      
    }
  }
?>

Biasanya, penggantian kaedah induk diperlukan untuk mengubah atau menambah kelakuan kaedah tersebut. Mari dalam kes kita tambah semakan panjang nama:

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

Mari kita pastikan bahawa yang dipanggil adalah kaedah yang diganti. Pertama, mari kita cipta objek kelas anak:

php<?php
  $student = new Student;
?>

Sekarang panggil kaedah kami, menghantar nilai yang betul ke dalamnya:

php<?php
  $student->setName('john');
?>

Dan sekarang panggil kaedah, menghantar nilai yang tidak betul ke dalamnya. Hasilnya, kita akan lihat pengecualian yang dibuang:

php<?php
  $student->setName(''); // ralat
?>
Задание 1

Dalam kelas User buatkan pengambil (getter) dan penetap (setter) umur.

Задание 2

Dalam kelas Employee gantikan penetap umur dan buatkan di dalamnya semakan bahawa umur dari 18 hingga 65 tahun.