Solucionado (ver solução)

Importante

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!

Solucionado
(ver solução)
2
respostas

Instanciar Classe Abstrata

O Vinícius cita que não é possível instanciar uma classe abstrata, gostaria de entender melhor o por quê disso? Ademais o que me deixou confuso também foi que nesse exercício, onde há o seguinte código:

public function adicionaBonificacaoDe (??? $funcionario)
{
    // ...
}

// ...
$gerente = new Gerente(...);
$controladorBonificacoes->adicionaBonificacaoDe($gerente);

As alternativas indicam que pode-se substituir o "???" pela classe abstrata Funcionário. Apesar desse código não instanciar a classe funcionário, ele utiliza um objeto dessa classe, por que isso é possível?

2 respostas
solução!

Opa, Lucas. O ponto é justamente o nome do capítulo: Polimorfismo.

Uma classe abstrata não está completa. Ela é um molde para que outras classes finalizem as definições. Já como tipo de parâmetro, nós podemos receber uma instância de qualquer classe que herde de funcionário, entende?

Ah, ok. Agora ficou mais claro, muito obrigado!!