Em Java, os atributos de uma classe podem ser declarados como estáticos ou não-estáticos.
Atributos estáticos são compartilhados por todas as instâncias da classe e não precisam ser inicializadas em cada objeto individualmente. Eles são geralmente usados para armazenar informações que são comuns a todos os objetos da classe, como contadores de instâncias ou configurações globais. Eles podem ser acessados usando o nome da classe e o operador ponto (.).
Por outro lado, os atributos não-estáticos são criados para cada objeto da classe, possuem seus próprios valores e podem ser diferentes entre objetos. Eles são geralmente usados para armazenar informações específicas de cada objeto, como suas coordenadas ou nome. Eles podem ser acessados através de uma referência ao objeto e o operador ponto (.).
Resumindo, atributos estáticos são compartilhados por todos os objetos da classe e não-estáticos são específicos para cada objeto.
Aqui estão alguns exemplos de programas em Java que utilizam atributos estáticos e não-estáticos:
Atributo estático
1 2 3 4 5 6 7 8 9 10 11 |
public class ContadorDeInstancias { private static int contador = 0; // atributo estático public ContadorDeInstancias() { contador++; } public static int getContador() { return contador; } } |
Neste exemplo, a classe ContadorDeInstancias
possui um atributo estático contador
que é usado para contar quantas instâncias da classe foram criadas. Cada vez que um novo objeto é criado, o construtor incrementa o contador. O método estático getContador
é usado para recuperar o valor do contador.
Atributo não-estático
1 2 3 4 5 6 7 8 9 10 11 |
public class Pessoa { private String nome; // atributo não-estático public Pessoa(String nome) { this.nome = nome; } public String getNome() { return nome; } } |
Neste exemplo, a classe Pessoa
possui um atributo não-estático nome
que é usado para armazenar o nome de cada objeto criado. O construtor é usado para inicializar o atributo nome
com o valor passado como parâmetro. O método getNome
é usado para recuperar o valor do atributo nome
.
É importante notar que a diferença entre atributos estáticos e não-estáticos não é apenas na sua visibilidade, mas também na sua natureza, atributos estáticos são compartilhados entre as instâncias da classe e não-estáticos são instância específicos.
*Atualizado em 24 de janeiro de 2023