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

this e super

Olá, boa tarde!

Dentro da classe ContaCorrente, quando o professor sobrescreve o método sacar, ele disse que utilizar o this ou super depois do return não faria diferença, mas eu não entendi o por que.

sacar(valor){
        let taxa = 1;
        return this._sacar(valor, taxa);
        //return super._sacar(valor, taxa);   Também é uma opçao válida        
    }

Entendi que o super irá invocar o método _sacar, mas entendi o que o this faz nesse caso. obrigado!

2 respostas
solução!

Não tenho acesso ao curso no momento mas se o método _sacar estiver em uma classe extendida pela ClasseCorrente, então ela herda esses métodos, então poderia usar o this pois _sacar é herdado por ela, e chamar por super também daria certo pq _sacar está defino na classe mãe.

Nesse caso, pelo q vc postou, parece que não houve uma sobrescrita de métodos pois são métodos com assinaturas diferentes.

Pra mim fez sentido, obrigado!

E sobre ser sobrescrito, é sobrescrito por que na classe mãe está assim:

    sacar(valor) {

        throw new Error("Esse metodo é abstrato e deve ser sobrescrito na classe filha.");
    }

    _sacar(valor, taxa){
        const valorSacado = taxa * valor;
        if (this._saldo >= valorSacado) {
            this._saldo -= valorSacado;
            return valorSacado;
        }

O método sacar é sobrescrito, e o _sacar não! O método sacar serve para encapsular o método privado _sacar (pelo que eu entendi!).