Método final

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