Sobrescrevendo métodos da classe pai em OOP em PHP
Uma classe filha pode sobrescrever um método da classe pai, criando um método com o mesmo nome. Vamos ver um exemplo. Suponha que temos a seguinte classe pai:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Vamos criar um método com o mesmo nome na classe filha:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Geralmente, a sobrescrita de métodos da classe pai é necessária para alterar ou complementar o comportamento desse método. No nosso caso, vamos adicionar uma verificação do comprimento do nome:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'erro no nome do estudante';
}
}
}
?>
Vamos verificar se é o método sobrescrito que está sendo chamado. Primeiro, vamos criar um objeto da classe filha:
<?php
$student = new Student;
?>
Agora vamos chamar nosso método, passando um valor válido para ele:
<?php
$student->setName('john');
?>
E agora vamos chamar o método, passando um valor inválido para ele. Como resultado, veremos a mensagem de erro:
<?php
$student->setName(''); // erro
?>
Na classe User
, crie
um getter e um setter para a idade.
Na classe Employee
, sobrescreva
o setter de idade e adicione uma
verificação para garantir que a idade esteja entre
18
e 65
anos.