Diferença entre estático e final em Java

Autor: Laura McKinney
Data De Criação: 2 Abril 2021
Data De Atualização: 13 Poderia 2024
Anonim
Diferença entre estático e final em Java - Tecnologia
Diferença entre estático e final em Java - Tecnologia

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.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoEstáticoFinal
AplicávelA 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çãoNã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çãoA variável estática pode ser reinicializada.A variável final não pode ser reinicializada.
MétodosOs 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.
ClasseO 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.
QuadraBloco 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.

  1. 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.
  2. 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.
  3. Uma variável estática pode ser reinicializada, enquanto que, uma vez inicializada, uma variável final nunca pode ser reinicializada.
  4. 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.
  5. 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.