3
respostas

pq o correto é this._saldo = saldoInicial e não this._saldo = _saldoInicial já que é privado

Porque o correto é:

export class ContaPoupanca {
    constructor (saldoInicial, cliente, agencia){
        this._saldo = saldoInicial
        this._cliente = cliente
        this._agencia = agencia
    }

e não

export class ContaPoupanca {
    constructor (saldoInicial, cliente, agencia){
        this._saldo = _saldoInicial
        this._cliente = _cliente
        this._agencia = _agencia
    }

já que é privado

3 respostas

export class ContaPoupanca { constructor (saldoInicial, cliente, agencia){ this.saldo = _saldoInicial this.cliente = cliente this.agencia = _agencia }

dessa forma não funciona.. sendo que você esta pegando pelo construtor esses valores e não pela variável declarada como privado

Olá Helena, tudo bem?

Muito interessante a sua dúvida.

Para você entender melhor porque isso acontece, vamos voltar a como instanciamos a classe uma.

Primeiro, colocamos o operador new, em seguida colocamos a classe e nos parêntesis passamos os dados.

const contaPoupancaRicardo = new ContaPoupanca(100, clienteRicardo, 1001);

Observe que esses dados, são colocados na mesma ordem do construtor da classe:

class ContaPoupanca {
    constructor (saldoInicial, cliente, agencia){
        this._saldo = saldoInicial
        this._cliente = cliente
        this._agencia = agencia
    }
}

Quando você faz this._saldo você está fazendo referência a um atributo da classe. Esse atributo é privado.

Porém o saldoInicial que está no construtor, não é privado. Porque ele não é um atributo. É apenas uma variável de referência.

Você poderia por exemplo, criar a sua classe com qualquer nome de variável, e funcionaria:

class ContaPoupanca {
    constructor (x, y, z){
        this._saldo = x
        this._cliente = y
        this._agencia = z
    }
}

Perceba que quando chamamos o construtor, apenas dizemos "Pegue o primeiro, segundo e terceiro parâmetro passados lá na hora de instanciar a classe, e coloque dentro dos atributos: this._saldo, this._cliente e this._agencia.

Basicamente, ele pegou os 100, passados na hora de instanciar a classe, coloca esse valor em uma variável de saldoInicial, e depois no construtor cria o atributo privado _saldo.

Espero que tenha ficado mais claro. Essa também foi uma dúvida que surgiu pra mim antes. Forte abraço!

Pq um é um atributo especifico de uma classe e o outro so esta recebendo mas não precisa e nao deve ser "privado"

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software