terça-feira, 6 de setembro de 2011

Dicas de Programação: Propriedades estáticas em Java

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: