Blz, Leonardo! Lá vai a explicação!
Quando vc utiliza o static
o que vc está dizendo é que aquele atributo ou método marcado com essa palavra chave será acessado como informação da classe! No caso dos atributos, por exemplo, implica dizer que eles terão o mesmo valor para qualquer objeto que vc crie. Mas não é isso que vc está tentando fazer e, por isso, a utilização do static
está incorreta! Tanto é verdade, que quando vc manda imprimir os clientes da lista vc obtém como resposta:
Cliente: Clodivildo
Idade: 31
Cliente: Clodivildo
Idade: 31
Cliente: Clodivildo
Idade: 31
Justamente pq seus atributos nome
e idade
estão marcados como static
, tendo um único valor para todos os objetos que vc criou!
O que vc quer é que cada um dos seus objetos clientes criados tenha seu próprio nome
e sua própria idade
! Para isso vc deve retirar o static
de todos os lugares onde vc o colocou na classe Cliente
, e por fim, quando for listar os clientes, deve fazer da forma como mostrei anteriormente (usando cliente
com c
minúsculo dentro do for
):
for (Cliente cliente : clientes) {
cliente.imprimeCliente();
}
Pegou a ideia?