Gráfico de comparação
Base para Comparação | Final | Finalmente | Finalizar |
---|---|---|---|
Basic | Final é uma "Palavra-chave" e "modificador de acesso" em Java. | Finalmente é um "bloco" em Java. | Finalize é um "método" em Java. |
Aplicável | Final é 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ção | O 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
- A palavra chave final é um modificador de acesso, finalmente é um bloco e finalizar é um método.
- 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.
- 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.