Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

palabra clave final en Java

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.

final int MAX_VALUE = 100;

Inicialización de final Variables

Una variable final debe inicializarse cuando se declara o dentro de un constructor si es una variable de instancia.

public class FinalInitialization {
    final int MAX_VALUE;

    public FinalInitialization() {
        MAX_VALUE = 100;
    }
}

2. final Métodos

Un método final no puede ser sobrescrito por subclases, lo que garantiza que la implementación del método permanezca inalterada.

class Parent {
    public final void display() {
        System.out.println("This is a final method.");
    }
}

3. final Clases

Una clase final no puede subclasificarse, lo que impide la herencia.

public final class FinalClass {
    // Class implementation
}

Ejemplos

Ejemplo 1: final Variable

public class FinalVariableExample {
    public static void main(String[] args) {
        final int MAX_VALUE = 100;
        System.out.println("MAX_VALUE: " + MAX_VALUE);
        // MAX_VALUE = 200; // This will cause a compilation error
    }
}

En este ejemplo, MAX_VALUE es una variable final. Si intentas reasignarlo, se producirá un error de compilación.

Ejemplo 2: final Método

class Parent {
    public final void display() {
        System.out.println("This is a final method.");
    }
}

class Child extends Parent {
    // public void display() { // This will cause a compilation error
    //     System.out.println("Attempting to override.");
    // }
}

public class FinalMethodExample {
    public static void main(String[] args) {
        Child obj = new Child();
        obj.display();
    }
}

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 class FinalClass {
    public void show() {
        System.out.println("This is a final class.");
    }
}

// class SubClass extends FinalClass { // This will cause a compilation error
// }

public class FinalClassExample {
    public static void main(String[] args) {
        FinalClass obj = new FinalClass();
        obj.show();
    }
}

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.
    public class FinalStaticExample {
        public static final double PI = 3.14159;
    }
  • 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.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis