A palavra-chave final
em Java tem vários usos, dependendo de onde ela é aplicada. Ela pode ser usada com variáveis, métodos e classes, garantindo diferentes tipos de comportamento.
1. final
com Variáveis
Quando a palavra-chave final
é usada com variáveis, isso significa que o valor da variável não pode ser alterado depois de atribuído. Em outras palavras, ela se torna uma constante.
Sintaxe
final int constante = 10;
Exemplo
public class ExemploFinalVariavel {
public static void main(String[] args) {
final int numero = 100;
// numero = 200; // Isso causaria um erro de compilação, pois a variável é final.
System.out.println("O valor de numero é " + numero);
}
}
Explicação:
- A variável
numero
foi declarada comofinal
, o que significa que, após receber o valor100
, ela não pode mais ser alterada.
2. final
com Métodos
Quando um método é declarado como final
, ele não pode ser sobrescrito por subclasses. Isso é útil quando você deseja garantir que a implementação de um método não será modificada em uma classe filha.
Sintaxe
class ClassePai {
public final void metodoFinal() {
System.out.println("Este método não pode ser sobrescrito.");
}
}
Exemplo
class Animal {
public final void fazerSom() {
System.out.println("O animal faz um som");
}
}
class Cachorro extends Animal {
// public void fazerSom() { // Isso causaria um erro de compilação
// System.out.println("O cachorro late");
// }
}
public class ExemploFinalMetodo {
public static void main(String[] args) {
Cachorro dog = new Cachorro();
dog.fazerSom(); // Exibe "O animal faz um som"
}
}
Explicação:
- O método
fazerSom()
na classeAnimal
foi declarado comofinal
, então ele não pode ser sobrescrito pela classeCachorro
.
3. final
com Classes
Quando uma classe é declarada como final
, ela não pode ser estendida. Isso significa que nenhuma outra classe pode herdar de uma classe final. Isso é feito para evitar que alguém modifique o comportamento da classe.
Sintaxe
final class ClasseFinal {
// Código da classe
}
Exemplo
final class Veiculo {
public void dirigir() {
System.out.println("Dirigindo o veículo");
}
}
// class Carro extends Veiculo { // Isso causaria um erro de compilação
// // Código da classe
// }
public class ExemploFinalClasse {
public static void main(String[] args) {
Veiculo v = new Veiculo();
v.dirigir(); // Exibe "Dirigindo o veículo"
}
}
Explicação:
- A classe
Veiculo
foi marcada comofinal
, então nenhuma outra classe, comoCarro
, pode herdar dela.
Resumo do final
- final com variáveis: Torna a variável uma constante. Seu valor não pode ser alterado após a atribuição.
- final com métodos: Evita que o método seja sobrescrito em subclasses.
- final com classes: Impede que a classe seja estendida.
O uso do final
em Java é importante para garantir que certas partes do código permaneçam imutáveis ou inalteráveis, ajudando a criar programas mais seguros e robustos.