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

Propriedade privada _saldo da classe pai (Conta) acessada/modificada pelas classes filhas (corrente e poupanca)

Olá pessoal!

Na atividade 4 desta aula (Construtor x Super), o _ é desconsiderado do nome do método template da classe pai, porque ele deixa de ser privado ao ser sobrescrito pelo mesmo método nas classes filhas.

Considerando as classes pai e filhas (ou classe e subclasses) abaixo, que são as respostas desta atividade (9):

class Conta {

    constructor(saldo) {
        this._saldo = saldo;
    }

    get saldo() {
        return this._saldo;
    }

    atualiza(taxa) {
        throw new Error('Você deve sobrescrever o método ');
    }
}
class ContaCorrente extends Conta {

    atualiza(taxa) {
        // modificação da propriedade privada da classe pai?
        this._saldo = this._saldo + taxa; 
    }
}
class ContaPoupanca extends Conta {

    atualiza(taxa) {
        this._saldo = this._saldo + taxa * 2;
    }
}

Dúvida: porque nesta atividade o _ foi mantido na propriedade _saldo da classe pai (Conta), se ele é acessado/modificado nas classes filhas? Não seria a mesma situação do método template da atividade 4?

At.te

3 respostas
solução!

Fala aí Elías, tudo bem? A ideia é um pouco diferente, nesse caso o _saldo é um atributo da classe e não um método, então o mesmo ainda permanece com _ para dar a ideia de utilizar o seu get através do saldo direto sem o _.

Se você tirar o _ vai perder a ideia de atributo privado com get e set.

Espero ter ajudado.

Olá Matheus!

Obrigado pelo retorno.

Agora confundiu o negócio, porque (me corrija se incorreto) neste curso, até antes do assunto herança, eu havia entendido que a convenção do _ é utilizada para indicar que o método ou propriedade/atributo de uma classe só pode ser sobrescrito/modificado pela própria classe...

At.te

Exatamente Elías, é isso mesmo.

Talvez eu não tenha explicado muito bem, mas, o seu questionamento está correto.

Espero ter ajudado.