Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Polimorfismo

No código abaixo, apesar do método adicionaBonificacao receber um Funcionário, ele sabe que tem que executar o método da classe Desenvolvedor ou Gerente, logo eu não perderia a as regras dos métodos que as classes filhas sobrescrevem do pai. Ou seja, apesar de receber um parametro mais genérico (Funcionario) isso não interfere nos métodos sobrescritos. É isso?

<?php

namespace Alura\Banco\Service;

use Alura\Banco\Modelo\Funcionario\Funcionario;

class ControladorDeBonificacoes
{
    private float $totalBonificacoes = 0;

    public function adicionaBonificacoes(Funcionario $funcionario):void
    {
        $this->totalBonificacoes += $funcionario->calculaBonificacao();
    }

    public function recuperaTotal():float
    {
        return $this->totalBonificacoes;
    }

}
1 resposta
solução!

Fala, Rafael. Isso aí.

O método que vai ser chamado é sempre da instância que for passada.

Se eu passar uma instância de Gerente, vai ser chamado o método calculaBonificacao definido na classe Gerente.

:-D