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;
}
}