Recuérdese que las variables declaradas como final no pueden cambiar su valor una vez que han sido inicializadas. En este apartado se van a presentar otros dos usos de la palabra final.
Una clase declarada final no puede tener clases derivadas. Esto se puede hacer por motivos de seguridad y también por motivos de eficiencia, porque cuando el compilador sabe que los métodos no van a ser redefinidos puede hacer optimizaciones adicionales.
Por ejemplo, se tiene la clase Cuadrado que extiende a la clase Figura.
Si se intenta extender la clase Cuadrado el IDE o el compilador daría un error similar:
Análogamente, un método declarado como final no puede ser redefinido por una clase que derive de su propia clase.
Por ejemplo, se tiene el método funcionFinal() en la clase Figura:
Si se intentara sobrescribir, nos daría un error similar: