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

Metodo da mae duplica resultado na filha

Quando eu insiro o metodo seguinte metodo na classe filha:

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

O metodo da classe mae eh o salario + bonificacao. Eu entendo que ele reaproveita o metodo da classe mae, mas fica parecendo que o metodo filho recebe dois salarios + bonificacao, pois no trecho super.getBonificacao() ja tem um salario e eu ainda somo outro salario no trecho + super.salario

Eu sei que na pratica o metodo filho quando executado vai ter somente um salario + bonificacao. Mas fiquei com esse questionamento depois de assistir essa aula. Faz algum sentido isso que eu to falando?

3 respostas

Olá Janaina, tudo bem com você?

Faz sentido sim, basicamente a implementação do método getBonificacao() da classe mãe ficou confusa, certo?

Acho importante apontar que esse é apenas um detalhe de implementação do método. Em outras palavras, poderíamos implementar qualquer outra regra para calcular a bonificação que não alteraria a lógica do programa ou a forma como ele deve funcionar.

No caso da aula, o método getBonificacao() da classe Funcionario retorna o resultado de this.salario * 0.1, o que representa 10% do salário. Mas poderia ser qualquer outro valor que fizesse mais sentido para você. Então não precisa ficar presa à essa continha, pode fazer suas próprias regras de bonificação, o importante mesmo é entender como é feita a chamada dos métodos da classe mãe através da palavra-chave super! ;)

solução!
    public double getBonificacao() {
        return super.getBonificacao() + super.salario;

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

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

    public double getBonificacao() {
        return this.salario;

A classe filha vai pegar o resultado dele, 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 é igual ao salario do funcionário, ou seja, se o salario do gerente é 1k, a bonificação dele como funcionário é 1k, mas ele é gerente também, então recebe mais 1k, ou seja, a bonificação do gerente será 2k

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;
    }

Show de bola! Obrigada, guris!