(1) Final: Modificador (palavra -chave). Se uma classe for declarada final, significa que ela não pode derivar novas subclasses e não pode ser herdada como uma classe pai. Portanto, uma classe não pode ser declarada abstrata e final. Declarar variáveis ou métodos como final pode garantir que eles não sejam alterados durante o uso. As variáveis declaradas como final devem ter um valor inicial quando declaradas e só podem ser lidas em referências futuras e não podem ser modificadas. Os métodos declarados como final também podem ser usados apenas e não podem ser sobrecarregados.
(2) Finalmente: fornece finalmente blocos para executar qualquer operação de compensação durante o manuseio de exceções. Se uma exceção for lançada, a cláusula de captura correspondente será executada e o controle entrará no bloco finalmente (se houver).
(3) Finalizar: nome do método. A tecnologia Java permite o uso do método Finalize () para fazer a limpeza necessária antes que o coletor de lixo limpe os objetos da memória. Este método é chamado pelo coletor de lixo ao determinar que o objeto não é referenciado. É definido na classe de objeto, portanto, todas as classes a herdam. A subclasse substitui o método finalize () para organizar recursos do sistema ou executar outros trabalhos de limpeza. O método finalize () é chamado no objeto antes que o coletor de lixo o exclua.
O exposto acima pode ser um pouco vago, vamos discutir mais profundamente
1. Propriedades diferentes
(1) final é a palavra -chave;
(2) Finalize () é um método;
(3) Finalmente é um sinalizador de bloco, usado nas instruções de tentativa;
Segundo, função
(1) Final é uma palavra -chave usada para identificar constantes, e as palavras -chave identificadas pelo final são armazenadas no pool constante (o uso específico das constantes finais será introduzido abaixo);
(2) O método finalize () é definido no objeto. É usado para chamar a JVM para lixo coletar o objeto quando o objeto "desaparecer", semelhante ao destruidor em C ++; Quando definido pelo usuário, é usado para liberar os recursos ocupados pelo objeto (como executar operações I/0);
(3) Finalmente {} é usado para identificar o bloco de código e cooperar com a tentativa {}. Independentemente de o código na tentativa ter sido executado ou não (aqui se refere a uma exceção), o programa no bloco de código será definitivamente realizado;
3. Explicação detalhada
1 Defina variáveis
1.1 Quando o final define uma variável de tipo básico, a inicialização da variável deve ser necessária para ser usada em outros locais ao declarar ou no construtor. As constantes definidas por essa palavra -chave não podem ser alteradas, exceto para o estágio de inicialização.
1.2 Final define uma referência a um objeto e a inicialização da referência é consistente com os requisitos ao definir uma constante; O conteúdo do objeto definido pela palavra -chave pode ser alterado, mas o endereço apontado pela referência não pode ser alterado;
2 Defina parâmetros
Se a variável definida por este parâmetro for transmitida, o método não poderá modificar o conteúdo do parâmetro (erro), que é o mesmo que as regras de modificação para definir a variável; O método Java passa o valor ao passar o tipo básico no método Java, e o método Java passa o parâmetro para o objeto; <Afinal, o método passa o método em Java depende da passagem de uma "cópia": para o tipo básico, primeiro crie uma cópia, atribua o valor aprovado para copiar e depois opere na cópia; Para o tipo de objeto, primeiro crie uma cópia de referência e atribua a referência de objeto passada a cópia>
Por exemplo: Método (teste final int);
Alguns livros dizem que os parâmetros de definição final aqui, especialmente os parâmetros do objeto, são muito úteis e não podem alterar o conteúdo do objeto dentro do método. Esta afirmação está errada! Acontece que também acho que existem algumas características funcionais de programação dessa maneira. Você não pode modificar o conteúdo do objeto. Aqui você ainda pode modificar o conteúdo do objeto.
? ? Qual é a utilidade de definir este parâmetro? ?
String nasce para ser final!
3 Método de definição
(1) métodos definidos usando a palavra -chave final não podem ser herdados por subclasses;
(2) Permitir que o compilador converta todas as chamadas para esse método em comportamento embutido (em linha), ou seja, você pode copiar esse método diretamente na chamada em vez de fazer chamadas de método de rotina (salve pontos de interrupção, pressione a pilha), o que aumentará a eficiência do programa. No entanto, se houver muitos, isso causará inchaço de código e afetará a eficiência; portanto, esse método deve ser usado com cautela. .
4 classe de definição
Qualquer classe final não pode ser herdada por ninguém, o que significa que essa classe é uma aula de folhas em uma árvore de herança, e essa classe é considerada perfeita e não requer nenhuma modificação (em resumo, não é recomendado)