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

duvida

private Conta[] contas = new Conta[10]; // Instancia um array de contas com 10 posições
 private int quantidade; // Variável privada do tipo int, se não definir um valor o padrão é 0

 // Método sem retorno que recebe uma conta como parametro ao ser chamado
public void AdicionaConta(Conta conta)
{
      this.contas[this.quantidade] = conta; // Guarda a referência do objeto tipo conta na posição 0 (this.quantidade vale 0 aqui) do array de contas 
      this.quantidade++; // Ao executar essa linha,  o valor é incrementado em 1, (de 0 passa a ser 1 e assim por diante).
}

Nao entendo porque no metodo Adiciona guarda todas as referencias do array na variavel conta. Quando o metodo seja chamado pela segunda vez, tendo em conta, que nao existe uma estrutura de repeticao como a variavel quantidade podera acrescentar?

3 respostas
solução!

Você tem uma array de contas com 10 posições, ao chamar o método AdicionarConta você recebe uma conta e insere nessa array, para fazer isso é utilizado a variável quantidade para saber em qual posição deve ser inserido a conta. Por exemplo, ao chamar a primeira vez o método AdicionarConta, quantidade estará valendo 0, então a conta será adicionado na primeira posição da array (contas[0]), após a inserção somamos 1 na variável quantidade (this.quantidade++), assim na segunda vez que chamarmos AdicionarConta, a conta recebida será adicionada na próxima posição da array(contas[1]), na terceira vez será na posição contas[2] e assim suscetivamente, até tivermos a array completa com 10 elementos.

contas[0] = conta; contas[1] = conta;

Nao entendo porque todas as posicoes do array se guarda na variavel conta

A variável conta representa a Conta que foi passada para o método AdicionarConta, cada vez que o método é chamado essa variável representará uma conta diferente.

//Duas contas diferentes
Conta c1 = new Conta();
Conta c2 = new Conta();

//A variável conta representará c1, então na verdade estamos adicionando c1 na array.
AdicionarConta(c1);

//Chamamos novamente o método só que agora passamos c2, então agora a variável conta representará c2.
AdicionarConta(c2);