2
respostas

output getBonificacao diferente para Funcionario e Gerente

Porque quando chamo o getBonificacao pra testar o Funcionario, o resultado eh que vejo somente a bonificacao (100.0, quando o salario eh 1000.00)

    public double getBonificacao() {
        return this.salario * 0.1;    
    }

Quando chamo o mesmo metodo getBonificacao para o Gerente, o output eh o salario + a bonificacao (5500.0, quando o salario eh 5000.00)

public double getBonificacao() {
        return super.getBonificacao() + super.getSalario(); 
    }

Thanks!

2 respostas

Oi Janaina, tudo bem ?

Pelo que vi seu código está certinho :)

    public double getBonificacao() {
        return super.getBonificacao() + super.getSalario;

Repare, que neste código que implementou na classe filha, você efetivamente está usando o getBonificação da classe mãe e somando o resultado dele ao valor do salário retornado pelo metodo getSalario da classe mãe.

Ou seja se o método da super classe estiver assim:

    public double getBonificacao() {
        return this.salario * 0.1; //retorna 10% do valor do salário
    }
    public double getSalario() {
        return this.salario;
    }

A classe filha vai pegar o resultado deles, e usar como valor em seu próprio método, está dizendo o seguinte: A bonificação do gerente, é igual a bonificação do funcionário + o salario do gerente.

Conforme falou, em sua classe mãe a bonificação é 10% do salario do funcionário, ou seja, se o salario do gerente é 1k, a bonificação dele como funcionário é 100, mas ele é gerente também, então recebe mais 1k, ou seja, a bonificação do gerente será 1100,00

Poderia escrever o método da classe filha da seguinte forma, para obter o mesmo resultado, talvez influencie no seu entendimento:

    public double getBonificacao() { //Bonificacao do gerente
        double bonificacaoFuncionario = super.getBonificacao();
        return bonificacaoFuncionario + super.salario;
    }