Muitas dúvidas aqui sobre isso e vou compartilhar como interpretei esse exercicio...
Na video-aula tivemos o método registra
com parâmetro do tipo Funcionario
que é funcional para todos as referências às classes filhas (como Gerente):
public class ControleBonificacao {
private double soma;
public void registra(Funcionario abc) {
double bonificacao = abc.getBonificacao();
this.soma = soma + bonificacao;
}
public double getSoma() {
return soma;
}
}
Nesse caso, é possível utilizar
public class TestaControle {
public static void main(String[] args) {
Funcionario g = new Gerente();
g.setSalario(5000.0);
ControleBonificacao controle = new ControleBonificacao();
controle.registra(g);
System.out.println("Soma de bonificacoes: R$" + controle.getSoma());
}
}
Mas não devemos ficar com a mente fixa no exercicio da video-aula. Esse aqui é um novo exercicio que quer que pensemos como está escrito o método registra
.
Se o código não está compilando, então o método não foi feito com base em Funcionario
.
Por trás dos panos ele estaria assim:
public class ControleBonificacao {
private double soma;
public void registra(Gerente abc) {
double bonificacao = abc.getBonificacao();
this.soma = soma + bonificacao;
}
public double getSoma() {
return soma;
}
}
Gerente ou qualquer outra classe filha no lugar de Funcionario.
Caso esteja incorreto por favor corrijam. Obrigado.