1
resposta

Dúvida sobre o polimorfismo

Não consegui entender muito bem porque ao chamar o método que chama o método da bonificação, porque ou como ele consegue chamar o exato referente ao construtor?

1 resposta

Boa noite Raul, tudo bem?

Na classe 'Controle Bonificação' podemos ver que é passado como argumento a classe 'Funcionario' dentro do método 'registra':

public class ControleBonificacao {

        private double soma;

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

E como a classe'Funcionario' é a classe pai, ou seja, as outras classes herdam dela, como: 'Gerente' e 'Editor de Video', pois um gerente é UM funcionário e quem edita vídeo é UM funcionário. É possível saber qual classe chamar, pois ao chamar o método 'registra' na classe principal estamos passando como argumento o nome que foi dado as classes ao instanciar, exemplo:

           ControleBonificacao controle = new ControleBonificacao();
            controle.registra(gerente);
            controle.registra(funcionario);
            controle.registra(editorvideo);

            System.out.println(controle.getSoma());

Isto acontece porque neste método registra, estamos passando a referência de um objeto da classe gerente, a referência de um objeto da classe funcionário, a referência de um objeto da classe editor vídeo, então ele irá pegar o 'getBonificacao' específico de cada uma.

Qualquer dúvida é só falar. Espero ter ajudado.