Yliluokan metodien ylikirjoittaminen OOP:ssa PHP:ssä
Aliluokka voi ylikirjoittaa yliluokan metodin luomalla metodin samalla nimellä. Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava yliluokka:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Luodaanpa aliluokassa samaniminen metodi:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Yleensä yliluokan metodien ylikirjoittaminen tarvitaan sen metodin käyttäytymisen muuttamiseksi tai täydentämiseksi. Lisätäänpä meidän tapauksessamme pituustarkistus nimelle:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Varmistetaan, että kutsutaan nimenomaan ylikirjoitettua metodia. Aluksi luodaan olio aliluokasta:
<?php
$student = new Student;
?>
Nyt kutsutaan metodia, antamalla sille oikea arvo:
<?php
$student->setName('john');
?>
Ja nyt kutsutaan metodia antamalla sille väärä arvo. Lopputuloksena näemme heitetyn poikkeuksen:
<?php
$student->setName(''); // virhe
?>
Luokassa User tee
ikä-getteri ja -setteri.
Luokassa Employee ylikirjoita
ikä-setteri ja tee siihen
tarkistus, että ikä on
18 ja 65 vuoden välillä.