Eu nao consegui entender o porquê, qua a minha soma deu resultado totalmente difirente. A minha soma deu 8450.0, sendo que no método da classe Funcionario está o valor de 10% do salario. Quando eu intanciei Gerente e Funcionario, somou correto, mas quando instanciei o editorVideo, ele somou junto com a soma anterior, o salario total do editorVideo e a sua porcentagem (10% do salario).
Método bonificação da Classe mãe - Funcionario
public double getBonificacao() { //método específico da classe pai - class Funcionario
return this.salario * 0.1;
}
class ControleBonificacao
package bytebank_herdado;
public class ControleBonificacao {
private double soma;
public void registra(Gerente g) {
double boni = g.getBonificacao();
this.soma = this.soma + boni;
}
public void registra(Funcionario f) {
double boni = f.getBonificacao();
this.soma = this.soma + boni;
}
public void registra(EditorVideo e) {
double boni = e.getBonificacao();
this.soma = this.soma + boni;
}
public double getSoma() {
return soma;
}
}
class TestaReferencia
package bytebank_herdado;
public class TestaReferencia {
public static void main(String[] args) {
Gerente g1 = new Gerente();
g1.setNome("Marcos");
g1.setSalario(5000.0);
Funcionario f1 = new Funcionario();
f1.setNome("João");
f1.setSalario(2000.0);
EditorVideo e1 = new EditorVideo();
e1.setNome("Marya");
e1.setSalario(2500.0);
ControleBonificacao controle = new ControleBonificacao();
controle.registra(g1);
controle.registra(f1);
controle.registra(e1);
System.out.println(controle.getSoma());
}
}