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

Nessa parte do código, eu posso usar o THIS ou devo sempre usar o SUPER?

double getBonificacao(){
        return this.salario +salario*0.10;
    }

insira seu código aqui


3 respostas

Você pode exibir a declaração da classe? Ela estende de alguma outra? Esse método é uma sobrescrita (override)?

Os getters e setters em 98% das vezes se usa this para referenciar atributos da própria classe.

O this nessa referencia não é obrigatório.

solução!

Olá Gean,

O this faz referencia a um atributo da própria classe, enquanto o super vai fazer referência a um objeto da classe mãe.

Nesta aula, o método getBonificacao é usado em mais de uma classe. Vejamos:

Na classe Funcionario o código é feito com o this pois o salario referenciado é o declarado na própria classe. Se você tentar usar o super, não vai compilar pois a classe Funcionario não possui classe mãe explicita, logo não possui tal referência.

public class Funcionario {

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

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

Já na classe Gerente, o método getBonificacao faz referência aos 2 atributos salario: primeiro ao da própria classe Gerente e em seguida ao da classe mãe, 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;
            } else {
                return false;
            }
        }

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

O this.salariorefere-se ao salário do objeto Gerente, e o super.salariorefere-se ao salario original existente na classe mãe Funcionario.

Mas quando usar um e quando usar outro?

Digamos que seu Gerente tem um valor de salário de 2000 reais, que é diferente do padrão estabelecido na classe mãe que seria de 1000 reais. Ao atribuir qualquer comportamento ao salário, como o cálculo de 10% de bonificação por exemplo, ao usar o super você pode calcular um valor errado pois seria calculado 10% em cima do salário padrão (1000) e não do salário do Gerente (2000). Por isso deve tomar cuidado onde usar o thise onde usar o super.

Espero ter ajudado!! Bons estudos!!