Diferença entre Final, Finalmente e Finalizar em Java

Autor: Laura McKinney
Data De Criação: 2 Abril 2021
Data De Atualização: 16 Poderia 2024
Anonim
Diferença entre Final, Finalmente e Finalizar em Java - Tecnologia
Diferença entre Final, Finalmente e Finalizar em Java - Tecnologia

Contente


As palavras "final, finalmente e finalizar" estão dentro do golpe do Java. Cada um deles tem 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 outras diferenças entre final, finalmente e final que são discutidas no gráfico de comparação.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusã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 and catch.finalize () é um método aplicável a objetos.
Trabalhando(1) A variável final torna-se constante e não pode ser reatribuída.
(2) Um método final não pode ser substituído pela classe filho.
(3) A classe final não pode ser estendida.
Um bloco "finalmente", limpe os recursos usados ​​no bloco "tente".O método Finalize executa as atividades de limpeza relacionadas ao objeto antes de sua destruição.
ExecuçãoO método final é executado após sua chamada.O bloco "Finalmente" é executado logo após a execução do bloco "try-catch".O método finalize () é executado imediatamente 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 em uma base por instância.

final int FILE_OPEN = 2;

Métodos finais

  • Quando um método na classe é declarado como final, ele não pode ser substituído por sua subclasse.
  • Pequenos métodos declarados finais podem ser feitos "inline" pelo compilador, o que reduzirá a sobrecarga da chamada de função e aumentará as melhorias de desempenho.
  • Os métodos substituídos chamam, são resolvidos dinamicamente, mas quando um método é declarado como final, ele não pode ser substituído. Portanto, a chamada de função pode ser resolvida em tempo de compilação.

classe A {final void meth () {System.out.ln ("Este é um método final."); }} a classe B estende A {void meth () {// O Clas B não pode herdar o método da classe A. System.out.ln ("Não substitui"); }}

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 // ...}

  • Em Java, “finalmente” é um bloco que está sempre associado ao bloco try / catch.
  • O bloco "finalmente" é executado após o bloco try / catch e antes do código após o bloco try / catch.
  • O bloco "final" será executado se a exceção for lançada ou não.
  • Quando uma exceção é lançada e nenhum bloco catch coincide com a exceção mesmo assim, o bloco "final" é executado.
  • Quando um método retorna ao chamador de dentro do bloco try / catch por meio de uma exceção não capturada ou uma declaração de retorno explícita, o bloco "final" é executado imediatamente antes do método retornar ao chamador.
  • O bloco "finally" é usado para limpar os recursos ou liberar a memória usada no bloco "try".
  • O bloco "final" é opcional, mas é uma boa prática escrever o bloco final após o bloco try / catch.

classe FinalmenteExemplo {// Este método lança uma exceção para fora do método. static void procA () {try {System.out.ln ("inside procA"); lançar nova RuntimeException ("demo"); } finalmente {System.out.ln ("procAs finalmente"); }} // Retorna de dentro de um bloco try. static void procB () {try {System.out.ln ("dentro de procB"); Retorna; } finalmente {System.out.ln ("procBs finalmente"); }} // Execute um bloco try normalmente. static void procC () {tente {System.out.ln ("inside procC"); } finalmente {System.out.ln ("procCs finalmente"); }} public static void main (String args) {try {procA (); } catch (Exceção e) {System.out.ln ("Exceção detectada"); procB (); procC (); }} // saída dentro de procA procA finalmente Exceção capturada dentro de procB procB finalmente dentro de procC procC finalmente

Definição de Finalizar

  • Finalize é um método em uma classe de objeto.
  • Um objeto pode conter alguns recursos não-java, como o identificador de arquivo; então deve ser liberado antes de ser destruído.
  • Esse método é chamado pelo coletor de lixo antes de destruir o objeto completamente.
  • Este 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.

  1. A palavra-chave final é um modificador de acesso, finalmente é um bloco e finalize é 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 que é usado para lidar com exceções, finalize é um método que opera apenas em objetos.
  3. A variável 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 final é 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 ele seja destruído.

Conclusão:

Final, finalmente e finalizar têm um efeito diferente quando aplicados a um método.