La palabra clave final en Java es un modificador de no acceso que puede aplicarse a variables, métodos y clases. Se utiliza para restringir al usuario la posibilidad de seguir modificando la entidad a la que se aplica. Esta palabra clave desempeña un papel crucial a la hora de garantizar la inmutabilidad e impedir la herencia o la sobreescritura de métodos.
Utilización
1. final Variables
Una variable final es una constante; una vez inicializada, su valor no puede cambiarse.
publicclassFinalVariableExample{publicstaticvoidmain(String[] args){
final int MAX_VALUE=100;
System.out.println("MAX_VALUE: "+MAX_VALUE);// MAX_VALUE = 200; // This will cause a compilation error}}Con la tecnología de
En este ejemplo, MAX_VALUE es una variable final. Si intentas reasignarlo, se producirá un error de compilación.
Ejemplo 2: final Método
classParent{public final voiddisplay(){
System.out.println("This is a final method.");}}classChildextendsParent{// public void display() { // This will cause a compilation error// System.out.println("Attempting to override.");// }}publicclassFinalMethodExample{publicstaticvoidmain(String[] args){
Child obj =newChild();
obj.display();}}Con la tecnología de
Aquí, el método display de la clase Parent está marcado como final, lo que impide que sea sobrescrito en la clase Child.
Ejemplo 3: final Clase
public final classFinalClass{publicvoidshow(){
System.out.println("This is a final class.");}}// class SubClass extends FinalClass { // This will cause a compilation error// }publicclassFinalClassExample{publicstaticvoidmain(String[] args){
FinalClass obj =newFinalClass();
obj.show();}}Con la tecnología de
En este ejemplo, FinalClass se declara como final, lo que significa que no puede ser extendida por ninguna otra clase.
Consejos y buenas prácticas
Inmutabilidad: Utiliza las variables final para crear constantes y asegurarte de que sus valores permanecen invariables a lo largo del programa.
Seguridad: Utiliza los métodos de final para evitar que las subclases alteren los métodos críticos, lo que puede ayudar a mantener la seguridad y la coherencia.
Diseño: Utiliza las clases final para evitar la herencia cuando diseñes clases inmutables o cuando quieras asegurarte de que la implementación de la clase no puede ser alterada.
Variables estáticas finales: A diferencia de las variables finales de instancia, las variables finales estáticas no pueden asignarse mediante constructores. Normalmente se inicializan en su declaración.
publicclassFinalStaticExample{publicstatic final double PI=3.14159;}Con la tecnología de
Rendimiento: En algunos casos, el uso de final puede ayudar al compilador Java y al compilador JIT a optimizar el código, ya que proporciona más información sobre la invariabilidad del valor.
La palabra clave
finalen Java es un modificador de no acceso que puede aplicarse a variables, métodos y clases. Se utiliza para restringir al usuario la posibilidad de seguir modificando la entidad a la que se aplica. Esta palabra clave desempeña un papel crucial a la hora de garantizar la inmutabilidad e impedir la herencia o la sobreescritura de métodos.Utilización
1.
finalVariablesUna variable
finales una constante; una vez inicializada, su valor no puede cambiarse.Inicialización de
finalVariablesUna variable
finaldebe inicializarse cuando se declara o dentro de un constructor si es una variable de instancia.2.
finalMétodosUn método
finalno puede ser sobrescrito por subclases, lo que garantiza que la implementación del método permanezca inalterada.3.
finalClasesUna clase
finalno puede subclasificarse, lo que impide la herencia.Ejemplos
Ejemplo 1:
finalVariableEn este ejemplo,
MAX_VALUEes una variablefinal. Si intentas reasignarlo, se producirá un error de compilación.Ejemplo 2:
finalMétodoAquí, el método
displayde la claseParentestá marcado comofinal, lo que impide que sea sobrescrito en la claseChild.Ejemplo 3:
finalClaseEn este ejemplo,
FinalClassse declara comofinal, lo que significa que no puede ser extendida por ninguna otra clase.Consejos y buenas prácticas
finalpara crear constantes y asegurarte de que sus valores permanecen invariables a lo largo del programa.finalpara evitar que las subclases alteren los métodos críticos, lo que puede ayudar a mantener la seguridad y la coherencia.finalpara evitar la herencia cuando diseñes clases inmutables o cuando quieras asegurarte de que la implementación de la clase no puede ser alterada.finalpuede ayudar al compilador Java y al compilador JIT a optimizar el código, ya que proporciona más información sobre la invariabilidad del valor.