Usando final em Java
Proteger métodos contra sobreposição:
O modificador final impede que um método seja sobreposto em subclasses.
Exemplo
class A {
final void meth() {
System.out.println("This is a final method.");
}
}
class B extends A {
// ERRO! Não pode sobrepor meth() porque é final
void meth() {
System.out.println("Illegal!");
}
}
Impedir a herança de uma classe:
Declarar uma classe como final impede que outras classes herdem dela.
Exemplo
final class A {
// ...
}
// ERRO! Não é permitido herdar de uma classe final
class B extends A {
// ...
}
Usar final com membros de dados (variáveis):
O modificador final pode ser aplicado a variáveis, tornando-as constantes. O valor de uma variável final não pode ser alterado após sua atribuição inicial.
Exemplo
class ErrorMsg {
final int OUTERR = 0;
final int DISKERR = 2;
String msgs[] = {
"Output Error",
"Disk Full"
};
// Retorna a mensagem de erro correspondente ao código
String getErrorMsg(int i) {
if(i >= 0 && i < msgs.length)
return msgs[i];
else
return "Invalid Error Code";
}
}
class FinalD {
public static void main(String args[]) {
ErrorMsg err = new ErrorMsg();
System.out.println(err.getErrorMsg(err.OUTERR));
System.out.println(err.getErrorMsg(err.DISKERR));
}
}
Convenção para constantes:
- Embora não obrigatório, é uma prática comum usar identificadores em maiúsculas para constantes final, como mostrado no exemplo acima (OUTERR e DISKERR).
- O modificador final em Java é útil para garantir a integridade de métodos, classes e variáveis, prevenindo sua alteração ou herança acidental em outras partes do código.
Top comments (0)