Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Método Bonificação...

Boa noite.

Quando testo a classe TesteReferencias o método de bonificação do Designer não está sendo chamado. É chamado somente o método de bonificação da classe Funcionario. Já revi toda a parte 3 do curso e não encontrei meu erro.

Esse é o resultado da execução, "Total de bonificações R$ 5575.0", quando deveria ser 5675.0 ....

Abaixo seguem as classes...

  • CONTROLE BONIFICAÇÃO
public class ControleBonificacao {

    private double soma;

    public void registra(Funcionario f) {
        this.soma += f.getBonificacao();
    }

    // métodos get and set
    public double getSoma() {
        return soma;
    }
}
  • FUNCIONÁRIO
public class Funcionario {

    private String nome;
    private String cpf;
    private double salario;

    // common methods
    public double getBonificacao() {
         return this.salario * 0.05;
    }

    // methods getters and setters
    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;
    }
}
  • DESIGNER
public class Designer extends Funcionario {

    public double getBoinificacao() {
        System.out.println("Chamando método de bonificação do DESIGNER");
        return 200;
    }
}
  • TESTE REFERENCIAS
public class TesteReferencias {

    public static void main(String[] args) {

        Funcionario f = new Funcionario();
        f.setSalario(2000.0);

        Funcionario g1 = new Gerente();
        g1.setSalario(5000.0);

        Funcionario e = new EditorVideo();
        e.setSalario(2500.0);

        Designer d = new Designer();
        d.setSalario(2000.0);


        ControleBonificacao controle = new ControleBonificacao();
        controle.registra(f);
        controle.registra(g1);
        controle.registra(e);
        controle.registra(d);

        System.out.println("Total de bonificações R$ " + controle.getSoma());

    }

}

Fico no aguardo..

2 respostas
solução!

Bom dia Leonardo, na classe Funcionario o método se chama:

public double getBonificacao() {

E na classe Designer:

public double getBoinificacao() {

Para o compilador não está errado mas são dois métodos diferentes, assim não está ocorrendo a sobrescrita

Bom dia.

Cara, que tonto, KKKKKK. Sim, agora funcionou!

Não procurei direito. Obrigado e desculpa pela falta de atenção.

Até..

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software