De que se trata o artigo: O artigo trata das diferenças entre membros estáticos e membros de instância. Descreve suas regras de utilização e resultados em suas execuções. Também faz uma breve referência ao uso de polimorfismo, sobrecarga e sobrescrita de métodos.
Para que serve: Todo método, variável ou bloco de inicialização na linguagem
Java são, ou estáticos ou de instância. Saber como cada um funciona é importante para o desenvolvimento de
aplicações.
Em que situação o tema é útil: Esse tema é útil para todos os
desenvolvedores Java, principalmente para os que estão iniciando na linguagem. Também pode se tornar um bom
material de estudo para certificações Java, como a OCJP
Resumo: O artigo relata as principais diferenças entre os membros estáticos e membros de instância na linguagem Java. Demonstra como eles devem ser criados, acessados e também suas regras de execução. Apresenta ainda conceitos ligados à herança como o uso de polimorfismo, métodos sobrecarregados e métodos sobrescritos. Exemplos práticos foram criados e suas execuções são explicadas para melhor aprendizado
Na linguagem Java há dois tipos de membros que podem ser utilizados em uma classe, os membros estáticos e os membros de instância. Estes tipos de membros apresentam diferenças na forma como devem ser declarados e também na maneira como se comportam em uma classe.
Os membros de uma classe podem ser considerados como métodos, variáveis e blocos estáticos ou de instância. Os membros estáticos sempre devem ser marcados com a palavra chave static, xenquanto os membros de instância não devem possuir esta marcação.
Neste artigo analisaremos as principais diferenças existentes entres métodos, variáveis e blocos de instância e estáticos. Analisaremos também como usar cada um deles, e qual o comportamento que eles terão na execução de uma classe e também quando trabalhamos com herança. Exemplos práticos serão demonstrados e seus resultados serão descritos passo a passo para melhor compreensão do assunto. Além disso, faremos uma pequena abordagem sobre os conceitos e regras de polimorfismo e de como sobrescrever e sobrecarregar métodos.
Membros Estáticos
A linguagem Java nos permite ter variáveis, blocos e métodos do tipo static. A palavra static está entre algumas das palavras chaves do Java, ou seja, faz parte das palavras reservadas que não podem ser usadas como nome de variáveis, métodos ou classes. Uma variável, um bloco ou mesmo um método do tipo static, não faz parte da instância de uma classe e sim da classe. Quando criamos uma classe com membros estáticos, esses membros serão os primeiros códigos a serem carregados, mesmo que não haja nenhuma instância desta classe.
O método estático mais conhecido é sem dúvida nenhuma o main(), utilizado para inicializar uma aplicação desenvolvida em Java. Dentro de um método ou de um bloco de inicialização estático, só podemos acessar variáveis ou outros métodos estáticos, e para acessarmos membros não estáticos precisamos então criar uma instância da classe.
Quando criamos variáveis e blocos estáticos em uma classe, devemos saber que eles serão executados de cima para baixo, ou melhor, do primeiro para o último criado. Podemos também ter uma classe apenas com membros estáticos.
Uma observação importante é que um método estático nunca será sobrescrito na subclasse. O conceito de sobrescrever não existe para métodos estáticos, ele serão redefinidos.
Devemos saber o que se pode e o que não se pode marcar como um membro estático. A linguagem Java oferece as seguintes possibilidades para esta marcação:
- Blocos de inicialização;
- Variáveis;
- Métodos;
- Uma classe aninhada dentro de outra classe.
Porém a marcação não poderá ser utilizada nos seguintes casos:
- Classes;
- Interfaces;
- Classes internas locais de métodos;
- Métodos de classes internas;
- Variáveis de instância;
- Variáveis locais.
Variáveis e Métodos Estáticos: O modificador static é usado para criar variáveis e métodos que irão existir independentemente de quaisquer instâncias criadas para a classe. Em outras palavras, os membros static existem antes mesmo de você criar uma nova instância de uma classe, e haverá apenas uma cópia do membro static, independentemente do número de instâncias dessa classe.
Membro estático: bloco de inicialização e método main()
Um bloco de inicialização estático é executado quando a classe é carregada pela JVM (Java Virtual Machine) e serve para inicializar alguma informação necessária antes mesmo de se ter acesso a uma instância da classe.
O método main() tem uma diferença para outros métodos estáticos, ele é por padrão o método que diz ao Java que essa é a classe principal do projeto. Assim, o JRE saberá qual método será responsável pela inicialização da aplicação. Em uma aplicação Java SE, precisamos de pelo menos um método main() para executá-la, já em uma aplicação Java EE isto não é necessário.
A diferença entre um método estático e um bloco estático é bem visível. O método estático possui nome e um tipo de retorno e pode ainda possuir uma lista de argumentos, enquanto o bloco estático não possui nada disto. Além disso, um método ou variável do tipo estático pode possuir os modificadores de acesso do tipo private, protected, public ou default.
Na execução do código da Listagem 1, será impressa na tela a frase que está dentro do bloco estático. Veja que em nenhum momento esse bloco foi chamado dentro do método main(). Ele simplesmente é executado na criação da classe e como possui uma linha de saída em tela, ela é exibida no console. O método main() neste caso serve apenas para executar a classe.
package javamagazine.listagem01; public class MyFirstClass { static { System.out.println("MyFirstClass.static"); } public static void main(String[] args) { //sem nenhuma instância } }
...
Confira outros conteúdos:
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,00
Total: R$ 708,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 64,00 /mês
Total: R$ 768,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.