
Orientação a objetos com Java
15 - Atributos e métodos estáticos
Atributos e métodos estáticos em Java pertencem à classe e não a uma instância específica de um objeto. Isso significa que você pode acessar atributos e métodos estáticos sem precisar criar uma instância da classe. Eles são comuns para funcionalidades que não dependem do estado de objetos individuais, mas sim de características da própria classe.
Atributos Estáticos
Um atributo estático (também chamado de variável de classe) é compartilhado por todas as instâncias da classe. Ou seja, todas as instâncias da classe possuem o mesmo valor para esse atributo, e ele é acessado diretamente pela classe ou por uma instância.
Características:
- Atributos estáticos são definidos com a palavra-chave static.
- São compartilhados por todas as instâncias da classe.
- São acessados usando o nome da classe ou através de um objeto.
Exemplo:
class Contador { static int count = 0; // Atributo estático public Contador() { count++; // Incrementa o valor de count sempre que um novo objeto é criado } public static void mostrarContagem() { System.out.println("Contagem: " + count); } } public class Main { public static void main(String[] args) { new Contador(); new Contador(); Contador.mostrarContagem(); // Exibe "Contagem: 2" } }
Métodos Estáticos
Um método estático pertence à classe e pode ser chamado sem a necessidade de instanciar um objeto. Ele não pode acessar diretamente atributos ou métodos de instância (não está ligado a um objeto específico), mas pode acessar outros membros estáticos.
Características:
- Métodos estáticos são definidos com a palavra-chave static.
- Eles podem ser chamados diretamente pela classe ou por um objeto.
- Não podem acessar atributos ou métodos não estáticos diretamente (sem uma instância).
Exemplo:
class Matematica { static int somar(int a, int b) { return a + b; // Método estático } } public class Main { public static void main(String[] args) { int resultado = Matematica.somar(5, 10); // Chamando método estático sem instanciar a classe System.out.println("Resultado: " + resultado); // Exibe "Resultado: 15" } }
Acompanhe abaixo o vídeo, onde exemplifico o uso de atributos e métodos estáticos: