Um método que é definido como final em uma classe não pode ser redefinido em classes derivadas. Considere o seguinte exemplo:
1:class ComFinal { 2: final int f() { 3: return 1; 4: } 5:} 6: 7:public class ExtComFinal extends ComFinal { 8: int f() { 9: return 0; 10: } 11:}
A tentativa de compilação dessa unidade geraria a seguinte mensagem de erro
[ricarte@mucuripe work]$ javac ExtComFinal.java ExtComFinal.java:8: The method int f() declared in class ExtComFinal cannot override the final method of the same signature declared in class ComFinal. Final methods cannot be overridden. int f() { ^ 1 error