Meetodite ülekirjutamine PHP OOP-s
Alamklass saab üle kirjutada vanema meetodi, luues meetodi sama nimega. Vaatame seda näite varal. Olgu meil järgmine vanemaklass:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Loome alamklassis samanimelise meetodi:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Tavaliselt on vanema meetodite ülekirjutamine vajalik selleks, et muuta või täiendada selle meetodi käitumist. Meie puhul lisame nime pikkuse kontrolli:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'õpilase nime viga';
}
}
}
?>
Veendume, et kutsutakse välja just ülekirjutatud meetod. Alustuseks loome alamklassi objekti:
<?php
$student = new Student;
?>
Nüüd kutsume välja oma meetodi, andes sellele korrektse väärtuse:
<?php
$student->setName('john');
?>
Nüüd kutsume meetodi välja, andes sellele mittekorrektse väärtuse. Tulemusena näeme välja visatud erindit:
<?php
$student->setName(''); // viga
?>
Klassis User tehke
vanuse getter ja setter.
Klassis Employee kirjutage üle
vanuse setter ja tehke selles
kontroll, et vanus oleks
18 kuni 65 aastat.