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

Só esta somando a classe do funcionario


public class TestaReferencia {

    public static void main(String[] args) {

        Gerente g1 = new Gerente();
        g1.setSalario(5000);

        Funcionario f1 = new Funcionario();
        f1.setSalario(2000);

        EditorVideo ev1 = new EditorVideo();
        ev1.setSalario(3000);

        ControleBonificacao controle = new ControleBonificacao();
        controle.registra(f1);
        controle.registra(ev1);
        controle.registra(g1);

        System.out.println(controle.getSoma());
    }


`

public class Funcionario {

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

    public double getBonificacao() {
        System.out.println("funcionario");
        return this.salario * 0.1;
    }

    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 ControleBonificacao {

    private double soma;

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

    public double getSoma() {
        return soma;
    }

}

`

funcionario funcionario funcionario 1000.0

3 respostas

Oi Pedro, tudo tranquilo?

Como estão implementados os métodos de getBonificacao() nas classes Gerente e EditorVideo?

No seu código, será printado "funcionario" toda vez que você registrar alguém, pois no código de getBonificacao(), temos um System.out.println("funcionario"); dentro dele:

public double getBonificacao() {
    System.out.println("funcionario");
    return this.salario * 0.1;
}

Espero que isso ajude, se ficou alguma dúvida é só avisar!

Bons estudos!!

//gerente herda da classe funcionario
public class Gerente extends Funcionario{

    private int senha;

    public void setSenha(int senha) {
        this.senha = senha;
    }

    public boolean autentica(int senha) {
        if (this.senha == senha) {
            return true;
        }
        return false;
    }

    public double getBonificao() {
        System.out.println("gerente");
        return super.getBonificacao() + super.getSalario();
    }



}


//gerente herda da classe funcionario public class EditorVideo extends Funcionario {

public double getBonificao() {
    System.out.println("Editor de Video");
    return super.getBonificacao() + 200;
}

}

solução!

Encontrei o problema, erro na digitação.