Oi Vinicius. Mil desculpas pela demora.
Que bom que funcionou. Esse foi um detalhe que deixei passar. É necessário usar a variável local criada no for
, como você fez, utilizando a cont
.
--
A sua classe Conta
tem uma referência para um Cliente
. Quando criamos uma classe temos uma especificação, por meio da qual conseguimos criar vários objetos na memória.
Cada vez que você utiliza o new
, um novo objeto é criado na memória. O código abaixo, por exemplo, cria dois objetos do tipo Conta
na memória:
new Conta();
new Conta();
Além de criar objetos na memória, conseguimos atribuir essa declaração pra variáveis:
Conta contaJoao = new Conta();
Conta contaAna = new Conta();
Quando você faz isso, contaJoao
e contaAna
apenas referenciam os objetos criados na memória com o new
.
O objeto é quem irá guardar os valores de fato. Quando você não define qualquer valor, existem valores padrão. Tipos numéricos por exemplo, tem valor 0
por padrão.
Tipos de referência, como o Cliente titular
que está dentro da sua Conta
, tem valor null
por padrão. O que indica que sua referência não aponta para um objeto na memória.
Quando você cria uma Conta
:
Conta conta = new Conta();
Você tem a variável conta
apontando para um objeto Conta
na memória.
Nessa momento, dentro do seu objeto Conta
, você consegue apontar para um Cliente
. Se você criar uma nova Conta
com new
, existirá um novo objeto na memória que será capaz de referenciar um objeto Cliente
.
Como são objetos separados, quando você define:
Cliente joao = new Cliente();
conta.titular = joao;
Você está dizendo que a variável titular
dentro do objeto para onde conta
se referencia, deve referenciar o mesmo objeto que a variável joao
se referencia. Ficaria algo como:
Faz sentido? Abraço!