1
resposta

Polimorfismo

Na aula 3, temos a classe ControleBonificacao

public class ControleBonificacao {

private double soma;

public void registra(Funcionario f) {
    double bonus = f.getBonificacao();
    this.soma = this.soma + bonus; 
}

}

Minha dúvida é: se o método registra funciona com Gerente g1 = new Gerente();

Pra que escrever Funcionario f1 = new Gerente();

Se o gerente já é um funcionário, pra que declarar a referencia de maneira diferente?

1 resposta

É possível que você possua um código que esteja fazendo uso de Funcionario, num ecosistema de classes que existam vários tipos de funcionários (Gerente, Diretor, Presidente, etc).

Por exemplo você possui um array de Funcionario em que precise percorrer o array e registrar cada elemento do array, algo do tipo:

List<Funcionario> listaFuncionario = new ArrayList<>();
populaComTotoTipoDeFuncionario(listaFuncionario);
listaFuncionario.forEach((f) -> f.registra());

Espero que ajude.