2
respostas

Melhores práticas para declarar/acessar métodos/atributos da classe pai na classe filha

Olá pessoal!

Neste exercício 2 tem-se o seguinte código:

    class ContaCorrente extends Conta implements Tributavel {

        // outros atributos e métodos

        public double calculaTributos() {
            return this.getSaldo() * 0.01;
        }
    }

Dúvidas (favor responder cada dúvida separadamente):

1 - o que as melhoras práticas indicam, utilizar this.getSaldo() ou super.getSaldo()?

2 - na classe pai Conta o atributo saldo não deveria ser "private"? Questiono porque se não me engano em exemplos/exercícios anteriores foi considerado "protected", porém com protected é possível alterar o saldo direto, sem utilizar o setter da classe pai Conta (ex: objeto cc.saldo = 0)

3 - nesta classe ContaCorrente também existe o seguinte método:

    public void atualiza(double taxa) {
        this.deposita(this.getSaldo() * taxa * 2); 
    }

O que as melhores práticas indicam, a forma acima está correta, eu deveria ter feito da forma abaixo ou existiria alguma outra maneira?

    private double saldo = 0;

    public void atualiza(double taxa) {
        this.saldo = this.getSaldo() * taxa * 2;
        this.deposita(this.saldo); 
    }

Desde já obrigado!

Atte., Elías.

2 respostas

Ola Elias, sua primeira duvida, o this, é uma referencia do atributo da própria classe, ja o super é ultilizado para puxar o metodo do classe Pai. então o this é uma referencia da própria classe, e o super é da classe do Pai.

A sua segunda duvida, é sim o atributo deveria ser private, ja que é uma otíma forma de proteger seus atributos para ninguem poder acessar o atributo, mais para você acessar ultilizar o get por ser privado.

A sua terceira duvida eu estou meio confuso, o seu segundo metodo, ele não ira pegar o saldo e somar com ele mesmo? para depois fazer a atualização? No primeiro metodo você pega o saldo só o saldo e sem somar ele e depois atualiza com o valor passado, o primeiro metodo seria o certo.

Olá Alisson,

Obrigado pelas explicações.

Em relação à dúvida 1, se o this é para atributos/métodos da classe, porque é permitido utilizá-lo para métodos da classe Pai?

Em relação à dúvida 3, editei o segundo método atualiza, estava incorreto, é para os 2 métodos estarem corretos, a dúvida aqui em si é se vocês fariam desta forma, se o cálculo pode ser feito direto e já passando como parâmetro para o this.deposita (método 1), se o melhor é fazer o calculo atribuindo a uma variável local, e somente depois passar a var local com parâmetro para o this.deposita (método 2), ou se tanto faz e até se existem alguma forma (melhor prática) do que estas que passei.

Desde já obrigado.