1
resposta

Porque a soma dos dois deu 5.350 ? já que o método soma o valor da porcentagem + o salario do paramêtro. No Caso do g.getBonificacion deu 5.250 ok, mas no f.getBonificacion era pra ter retornado 2.100

private double soma;

public void registra(Gerente g) {
    double boni = g.getBonificacion();
    this.soma = this.soma + boni;
}

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

public double getSoma() {
    return soma;
}

}

1 resposta

Oi Diego, tudo bem?

Como o método getBonificacao() está implementado no seu código?

Em uma aula anterior, no mínuto 2:35, o Nico mudou a implementação do getBonificacao() da classe Funcionario para retornar apenas 5% do salario:

public class Funcionario {

    //Código omitido

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

    //Código omitido
}

Portanto, ao registrarmos o funcionário e o gerente no TesteReferencias, é feita a soma da bonificação do gerente com a bonificação do funcionário, sendo:

Bonificação do Gerente: 5250.0 (o próprio salário de 5000.0 + 5% desse mesmo salário que vale 250.0)

public class Gerente extends Funcionario {
@Override
public double getBonificacao() {
    return super.getBonificacao() + super.getSalario();
}

+

Bonificação do Funcionário: 100 (5% do próprio salário de 2000.0)

public class Funcionario {
@Override
public double getBonificacao() {
    return super.getBonificacao() + super.getSalario();
}

Espero ter ajudado, qualquer dúvida estou aqui!

Bons estudos!!