Recomendado, 2024

Escolha Do Editor

Diferença entre Final, Finalmente e Finalizar em Java

As palavras "final, finalmente e finalizar" estão no contexto de Java. Cada um deles é fornecido um funcionamento diferente. A diferença básica entre final, finalmente e finalizar é que final é um modificador de acesso, finalmente é um bloco e finalizar é um método de uma classe de objeto. Existem algumas outras diferenças entre final, finalmente e finalizar, que são discutidas no gráfico de comparação.

Gráfico de comparação

Base para ComparaçãoFinalFinalmenteFinalizar
BasicFinal é uma "Palavra-chave" e "modificador de acesso" em Java.Finalmente é um "bloco" em Java.Finalize é um "método" em Java.
AplicávelFinal é uma palavra-chave aplicável a classes, variáveis ​​e métodos.Finalmente, é um bloco que está sempre associado ao bloco try e catch.finalize () é um método aplicável a objetos.
Trabalhando(1) A variável final se torna constante e não pode ser reatribuída.
(2) Um método final não pode ser substituído pela classe filha.
(3) A classe final não pode ser estendida.
Um bloco "finalmente", limpe os recursos usados ​​no bloco "try".O método Finalize executa as atividades de limpeza relacionadas ao objeto antes de sua destruição.
ExecuçãoO método final é executado em sua chamada.O bloco "Finally" é executado logo após a execução do bloco "try-catch".O método finalize () é executado antes da destruição do objeto.

Definição de Final

"Final" é uma palavra-chave em Java. É um modificador de acesso. A palavra-chave “final” é aplicável às classes, métodos e variáveis. Vamos ver como isso funciona com cada um deles.

Variável Final

  • Quando uma palavra-chave final é aplicada à variável, ela não pode mais ser modificada.
  • Uma variável final deve ser inicializada quando é declarada.
  • Em uma convenção de codificação comum, as variáveis ​​finais são declaradas em MAIÚSCULAS.
  • A variável final não ocupa memória por instância.
 int final FILE_OPEN = 2; 

Métodos Finais

  • Quando um método em classe é declarado como final, ele não pode ser substituído por sua subclasse.
  • Pequenos métodos que são declarados final podem ser feitos "inline" pelo compilador, o que reduzirá a sobrecarga da chamada de função e aumentará os aprimoramentos de desempenho.
  • Chamada de métodos substituídos, são resolvidos dinamicamente, mas quando um método é declarado como final, ele não pode ser sobrescrito. Portanto, a chamada de função pode ser resolvida em tempo de compilação.
 classe A {final void meth () {System.out.println ("Este é um método final."); }} classe B estende A {void meth () {// Clas B não pode herdar o método da classe A. System.out.println ("Does not override"); }} 

Classe final

  • Quando uma classe é declarada como final, ela não pode ser herdada por nenhuma subclasse.
  • Declarar uma classe como final declarará automaticamente todos os seus métodos finais.
  • Você não pode declarar uma classe como "abstrata" e "final".
 classe final A {// ...} classe B estende A {// A classe B não pode herdar a classe A // ...} 

Definição de Finalmente

  • Em Java, “finally” é um bloco que está sempre associado ao bloco try / catch.
  • O bloco “finally” é executado após o bloco try / catch e antes do código seguinte ao bloco try / catch.
  • O bloco “finalmente” executará se a exceção é lançada ou não.
  • Quando uma exceção é lançada e nenhum bloco catch corresponde à exceção, o bloco “finally” é executado.
  • Quando um método retorna ao chamador de dentro do bloco try / catch por meio de uma exceção não capturada ou de uma instrução de retorno explícita, o bloco “finally” é executado logo antes do método retornar ao chamador.
  • O bloco “finalmente” é usado para limpar os recursos ou liberar a memória usada no bloco “try”.
  • O bloco “finally” é opcional, mas é uma boa prática escrever finalmente o bloco após o bloco try / catch.
 class FinallyExample {// Este método lança uma exceção fora do método. estática void procA () {try {System.out.println ("inside procA"); throw new RuntimeException ("demo"); } finalmente {System.out.println ("procA's finally"); }} // Retorna de dentro de um bloco try. estático void procB () {try {System.out.println ("dentro procB"); Retorna; } finalmente {System.out.println ("procB's finally"); }} // Executa um bloco try normalmente. estático void procC () {try {System.out.println ("inside procC"); } finalmente {System.out.println ("procC's finally"); }} public static void main (args de seqüência de caracteres []) {try {procA (); } catch (Exception e) {System.out.println ("Exceção capturada"); } procB (); procC (); }} // output within procA procA's finalmente Exceção capturada dentro do procB do procB finalmente dentro do procC do procC's finalmente 

Definição de finalizar

  • Finalize é um método em uma classe de objeto.
  • Um objeto pode estar segurando alguns recursos não-java, como identificador de arquivo; então deve ser liberado antes de ser destruído.
  • Esse método é chamado pelo coletor de lixo antes de destruir completamente o objeto.
  • Esse método executa atividades de limpeza para o objeto antes de ser destruído.

A forma geral do método finalize () é a seguinte.

 protected void finalize () {// código de finalização aqui} 

O método finalize é declarado como protegido para que não possa ser acessado de fora da classe.

Esse método é sempre chamado antes da coleta de lixo.

Principais diferenças entre final, finalmente e finalizar

  1. A palavra chave final é um modificador de acesso, finalmente é um bloco e finalizar é um método.
  2. A palavra-chave final é aplicável às classes, variáveis ​​e métodos das classes, finalmente é um bloco associado ao bloco try catch usado para manipular exceções, finalize é um método que opera somente em objetos.
  3. A variável, uma vez declarada como final, se torna constante e não pode ser reatribuída novamente, um método declarado como final não pode ser substituído e a classe, uma vez declarada como final, nunca pode ser herdada. O bloco finally é usado para limpar os recursos utilizados pelo bloco try and catch. O método finalize é usado para limpar os recursos usados ​​por um objeto antes que o objeto seja destruído.

Conclusão:

Final, finalmente e finalizar tem um efeito diferente quando aplicado em um método.

Top