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!