Pessoal
Implementei o código abaixo para testar o poliformismo. Incluí um sysoutprintln em cada classe, similar ao que o professor fez no exemplo da aula, porém quando executo, o console apresenta duas vezes a informação "bonificação funcionário". a soma final está correta o que indica que o código da classe funcionário foi executado uma única vez como esperado.
public class Funcionario {
private String nome;
private String cpf;
private double salario;
public double getBonificacao() {
System.out.println("bonificação Funcionário");
return this.salario * 0.05;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
public class Gerente extends Funcionario{
private int senha;
public boolean autentica(int senha ) {
if (this.senha == senha) {
return true;
} else {
return false;
}
}
public void setSenha(int senha) {
this.senha = senha;
}
public int getSenha() {
return senha;
}
public double getBonificacao() {
System.out.println("bonificação Gerente");
return getSalario() *0.2;
}
}
public class Designer extends Funcionario{
private int senha;
public boolean autentica(int senha ) {
if (this.senha == senha) {
return true;
} else {
return false;
}
}
public void setSenha(int senha) {
this.senha = senha;
}
public int getSenha() {
return senha;
}
public double getBonificacao() {
System.out.println("bonificação Designer");
return super.getBonificacao() + super.getSalario();
}
}
public class TesteFuncionario {
public static void main(String[] args) {
Gerente g1 = new Gerente();
Funcionario f1 = new Funcionario();
Designer d1 = new Designer();
g1.setSalario(1000);
f1.setSalario(1000);
d1.setSalario(1000);
ControleBonificacao controle = new ControleBonificacao();
controle.Registra(g1);
controle.Registra(d1);
controle.Registra(f1);
System.out.println(controle.getSoma());
}
}