Esta dúvida também apareceu semana passada...
Se eu criar uma propriedade estática do tipo contador e incrementa-la no construtor do objeto...
public class Usuario {
private static int contador = 0;
//Construtor
public Usuario() {
contador++;
}
//Exibe o valor
public void exibirContador() {
System.out.println("No. de Usuarios: " + contador);
}
}
E criar e instanciar 5 objetos desta classe, não importa em qual objeto chamar o método exibirContador, que ele sempre retornará o mesmo valor, ou seja, 5 (é como se a variável fosse global):
Usuario u1 = new Usuario();
Usuario u2 = new Usuario();
Usuario u3 = new Usuario();
Usuario u4 = new Usuario();
Usuario u5 = new Usuario();
u2.exibirContador(); //Tente trocar para qualquer outro objeto que sempre dará o mesmo valor...
Outra dúvida que surgiu é a chamada desta variável. Será que é possível chamar assim:
public Usuario() {
contador++;
}
Ou assim:
public Usuario() {
this.contador++;
}
Ou assim:
public Usuario() {
Usuario.contador++;
}
Sim, por incrivel que pareça, é possível. (agora, não me pergunte o porque... - parece que isso tem haver com escopo da variável e outras coisas a mais que não faço a menor idéia de como funciona...)
Que confusão... Será que eu consegui explicar alguma coisa?
Bem, de qualquer forma, é bom testar o código acima... :P
Até mais!
Nenhum comentário:
Postar um comentário