Diferença entre estático e final em Java
Contente
Estático e final são as palavras-chave usadas em Java. O membro estático pode ser acessado antes da criação do objeto de classe. Final tem um efeito diferente quando aplicado a classe, métodos e variáveis. A principal diferença entre uma palavra-chave estática e uma palavra-chave final é que estático is keyword é usada para definir o membro da classe que pode ser usado independentemente de qualquer objeto dessa classe. Final A palavra-chave é usada para declarar uma variável constante, um método que não pode ser substituído e uma classe que não pode ser herdada.
- Gráfico de comparação
- Definição
- Principais diferenças
- Conclusão
Gráfico de comparação
Base para Comparação | Estático | Final |
---|---|---|
Aplicável | A palavra-chave estática é aplicável à classe estática, variáveis, métodos e bloco aninhados. | A palavra-chave final é aplicável à classe, métodos e variáveis. |
Inicialização | Não é obrigatório inicializar a variável estática no momento de sua declaração. | É obrigatório inicializar a variável final no momento da sua declaração. |
Modificação | A variável estática pode ser reinicializada. | A variável final não pode ser reinicializada. |
Métodos | Os métodos estáticos podem acessar apenas os membros estáticos da classe e podem ser chamados apenas por outros métodos estáticos. | Os métodos finais não podem ser herdados. |
Classe | O objeto de classes estáticas não pode ser criado e contém apenas membros estáticos. | Uma classe final não pode ser herdada por nenhuma classe. |
Quadra | Bloco estático é usado para inicializar as variáveis estáticas. | A palavra-chave final não suporta esse bloco. |
Definição de Estático
Static é uma palavra-chave, aplicável às classes, variáveis, métodos e blocos. Os membros da classe, classe e blocos podem ser tornados estáticos usando a palavra-chave “estática” na frente do nome dos membros da classe, classe e blocos, respectivamente. Quando um membro da classe é declarado como estático, ele se torna global para todos os outros membros da classe. O membro estático da classe não ocupa memória por instância, ou seja, todos os objetos compartilham a mesma cópia do membro estático. O membro estático pode ser usado independentemente de qualquer objeto dessa classe. Você pode acessar o membro estático da classe antes que seu objeto seja criado. O melhor exemplo do membro estático é o método main (), ele é declarado estático para que possa ser chamado antes que exista qualquer objeto. A forma geral de acessar o membro estático da classe:
class_name.static_member // acessando membro estático da classe
No código acima class_name é o nome da classe na qual o static_member está definido. Membro estático pode ser uma variável estática ou método estático
Variáveis estáticas:
- Uma variável estática atua como uma variável global para todos os outros membros de dados da classe.
- Uma variável estática pode ser acessada antes de qualquer objeto da classe existir.
- Uma variável estática pode ser acessada com o nome da classe na qual é definida, seguida pelo operador ponto (.).
Métodos estáticos:
- Um método estático pode chamar apenas outros métodos estáticos.
- Um método estático pode acessar apenas dados estáticos.
- Um método estático não pode ser referido como "isto" ou "super" em nenhuma condição.
- Um método estático pode ser acessado com o nome da classe em que é definido, seguido pelo operador ponto (.).
Classe estática:
- Java tem o conceito de classe estática aninhada. A classe mais externa não pode ser tornada estática, enquanto a classe mais externa pode ser tornada estática.
- Uma classe aninhada estática não pode acessar o membro não estático da classe externa.
- Ele pode acessar apenas os membros estáticos da classe externa.
Bloco estático:
O bloco estático é executado apenas uma vez quando a classe é carregada. Usado para inicializar as variáveis estáticas da classe.
C ++:
No C ++, temos o conceito de variáveis estáticas e funções estáticas, enquanto o C ++ não suporta classe estática.
C #:
C # também suporta classe estática, variáveis estáticas e classe estática.
Java:
Java suporta classe aninhada estática, variáveis estáticas, métodos estáticos.
Definição de Final
Final é uma palavra-chave aplicável à classe, variável e métodos. A classe, variável e o método são declarados como finais usando a palavra-chave "final" precedida pelo nome. Uma vez que uma variável é declarada como final; não pode ser modificado mais no programa. Uma variável final deve ser inicializada na declaração de tempo. Variáveis finais não ocupam memória por instância. Todos os objetos das classes compartilham a mesma cópia da variável final.
O método declarado como final não pode ser substituído pela subclasse da classe na qual o método final é declarado. Quando uma classe é declarada como final, outra classe não pode herdar essa classe final. C ++, C # não suportam o conceito se a palavra-chave final. Java suporta o conceito de palavra-chave final e em Java; classe, variável e método podem ser declarados como finais.
- A palavra-chave estática é aplicável a uma classe estática, variáveis, métodos e blocos aninhados. Por outro lado, a palavra-chave final é aplicável aos métodos e variáveis de classe.
- A variável estática pode ser inicializada a qualquer momento, enquanto que uma variável final deve ser inicializada no momento da declaração.
- Uma variável estática pode ser reinicializada, enquanto que, uma vez inicializada, uma variável final nunca pode ser reinicializada.
- Um método estático pode acessar o membro estático da classe e só pode ser chamado por outros métodos estáticos. Por outro lado, o método final nunca pode ser herdado por nenhuma classe.
- O bloco estático é usado para inicializar as variáveis estáticas, enquanto que a palavra-chave final não suporta nenhum bloco.
Conclusão:
As palavras-chave estática e final resolvem propósitos diferentes quando aplicadas a classe, variável e método.