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?
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!
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?
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.