Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Construtor

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?

6 respostas

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.

solução!

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!