Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Porque o Gerente o salario é chamado como g1.setSalario e os outros são chamados como f.setSalario ?

Já que estamos trabalhando com polimorfismo porque o Gerente o salario é chamado como g1.setSalario e os outros são chamados como f.setSalario ?

public class TestaReferencias {

    public static void main(String[] args) {

        Gerente g1 = new Gerente();
        g1.setNome("Marcos");
        g1.setSalario(5000.0);

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

        EditorVideo ev = new EditorVideo();
        f.setSalario(2500.0);

        ControleBonificacao controle = new ControleBonificacao();
        controle.registra(g1);
        controle.registra(f);
        controle.registra(ev);

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

    }

}
1 resposta
solução!

Olá Caroline, tudo bem com você?

Nesse caso, o Nico se enganou ao definir o salário do editor de vídeo. Ao invés de ev.setSalario(2500.0), usando a referência correta do EditorVideo. Ele acabou usando o f.setSalario(2500.0), referenciando o Funcionario por engano, o que fez com que ele setasse o salário do mesmo funcionário duas vezes.

Nessa situação, tanto o EditorVideo quanto o Gerente usaram o método setSalario() do Funcionario. A única confusão aqui ocorreu na troca da referência do editor ev pelo funcionário f, mas todos usam o método presente na classe Funcionario! :)

Não sei se consegui ser claro, mas espero ter esclarecido a dúvida!

Abraços e bons estudos!!

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