Eai pessoal, tenho os seguintes códigos:
class Funcionario {
public double getBonificacao() {
System.out.println("CHAMADA FUNCIONARIO");
return this.salario * 0.1;
}
}
class Gerente extends Funcionario{
public double getBonificacao() {
System.out.println("CHAMADA GERENTE");
return super.getBonificacao() + super.getSalario();
}
}
class Designer extends Funcionario{
//REGRA BONIFICAÇÃO
public double getBonificacao() {
System.out.println("CHAMADA DESIGN");
return 100;
}
}
class EditorVideo extends Funcionario{
//REGRA BONIFICAÇÃO
public double getBonificacao() {
System.out.println("CHAMADA EDITOR");
return 300;
}
}
E o teste de referencias:
public class TesteReferencia {
public static void main(String[] args) {
Designer d = new Designer();
d.setSalario(1500);
EditorVideo e = new EditorVideo();
e.setSalario(2000);
Gerente g = new Gerente();
g.setSalario(5000);
Funcionario f = new Funcionario();
f.setSalario(2200);
ControleBonificacao controle = new ControleBonificacao();
controle.cadastra(d);
controle.cadastra(e);
controle.cadastra(g);
controle.cadastra(f);
System.out.println(controle.getTotal());
}
}
A Soma esta certa, porém o system.out.println() do funcionário, aparece duas vezes. Porque ? Minha saída é a seguinte:
CHAMADA DESIGN
CHAMADA EDITOR
CHAMADA GERENTE
CHAMADA FUNCIONARIO
CHAMADA FUNCIONARIO
6120.0