Boa noite. Não sei se entendi certo nas aulas passadas, mas parece que vimos que é sempre uma boa prática declarar o construtor mesmo que a classe filha herde a implementação da mãe, certo?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite. Não sei se entendi certo nas aulas passadas, mas parece que vimos que é sempre uma boa prática declarar o construtor mesmo que a classe filha herde a implementação da mãe, certo?
Olá, Karolina. Não entendi bem sua dúvida. Consegue reformular? :-)
Se eu tenho uma classe:
class Funcionario
{
protected $nome;
protected $cpf;
public function __construct($nome, $cpf)
{
$this->nome = $nome;
$this->cpf = $cpf;
}
}E agora tenho uma classe que herda dela. Pelo que entendi mesmo que eu não vá acrescentar nenhum parâmetro no construtor, ainda assim tenho que chamar o da classe mãe não?
class Gerente extends Funcionario
{
public function __construct($nome, $cpf)
{
parent::__construct($nome, $cpf);
}
}Parece que entendi que era uma boa prática fazer isso.
Ah, agora entendi. Não é necessário não ter essa implementação "vazia" não, Karolina.
Agora se você for fazer algo a mais no construtor da classe filha, então a boa prática é sim chamar o construtor da classe base porque infelizmente o PHP não faz isso automaticamente.
Boa tarde. Você disse que se eu quiser acrescentar algo no construtor da classe filha ai sim eu chamo o construtor da classe mãe porque o PHP não faz isso automático. Então se eu criar um construtor na classe filha e não chamar o construtor da classe mãe, então o PHP vai entender o construtor da classe filha simplesmente como um novo construtor?
Isso, Karolina. Ele vai executar apenas o construtor da classe filha. O que pode ser um problema em alguns casos, deixando a classe base em um estado inválido. Por isso, sempre que criarmos um construtor na classe filha, devemos chamar o construtor da classe mãe.
Entendi. Obg!