Prepisovanje metod starša v OOP v PHP
Podrejeni razred lahko prepiše metodo starša z ustvarjanjem metode z enakim imenom. Poglejmo si primer. Recimo, da imamo naslednji starševski razred:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
V podrejenem razredu ustvarimo metodo z enakim imenom:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Praviloma je prepisovanje metod starša potrebno zato, da spremenimo ali dopolnimo vedenje te metode. V našem primeru dodajmo preverjanje dolžine imena:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'napaka imena študenta';
}
}
}
?>
Prepričajmo se, da se kliče natančno prepisana metoda. Najprej ustvarimo objekt podrejenega razreda:
<?php
$student = new Student;
?>
Zdaj pokličimo našo metodo, in ji posredujmo pravilno vrednost:
<?php
$student->setName('john');
?>
Zdaj pa pokličimo metodo in ji posredujmo nepravilno vrednost. Kot rezultat bomo videli izvrženo izjemo:
<?php
$student->setName(''); // napaka
?>
V razredu User naredite
getter in setter za starost.
V razredu Employee prepišite
setter za starost in v njem
dodajte preverbo, da je starost
od 18 do 65 let.