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
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
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
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
$student = new Student;
?>
Sekarang panggil kaedah kami, menghantar nilai yang betul ke dalamnya:
<?php
$student->setName('john');
?>
Dan sekarang panggil kaedah, menghantar nilai yang tidak betul ke dalamnya. Hasilnya, kita akan lihat pengecualian yang dibuang:
<?php
$student->setName(''); // ralat
?>
Dalam kelas User buatkan
pengambil (getter) dan penetap (setter) umur.
Dalam kelas Employee gantikan
penetap umur dan buatkan di dalamnya
semakan bahawa umur dari
18 hingga 65 tahun.