Sobes.tech
Junior

¿Qué significa la palabra clave 'final' en el lenguaje de programación Java?

sobes.tech AI

Respuesta de la IA

La palabra clave final en Java se usa para indicar que una variable, método o clase no pueden ser modificados.

  1. Variable final:

    • A una variable declarada como final, su valor solo puede ser asignado una vez. Después de la asignación, no puede ser cambiado.
    • Para tipos de datos primitivos, el valor de una variable final es una constante.
    • Para tipos de datos referenciales, final significa que la referencia al objeto no puede ser cambiada, pero el estado del objeto (sus campos) puede ser modificado (a menos que los campos del objeto también sean final).
    final int MAX_VALUE = 100; // variable final primitiva
    
    final List<String> names = new ArrayList<>(); // variable referencial final
    names.add("Alice"); // OK
    // names = new ArrayList<>(); // Error de compilación - no se puede reasignar la referencia
    
  2. Método final:

    • Un método declarado como final no puede ser sobreescrito en subclases.
    • Esto se usa para prevenir cambios no deseados en el comportamiento en la jerarquía de herencia.
    class Parent {
        final void display() {
            System.out.println("Este es un método final.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Error de compilación - no se puede sobreescribir un método final
    }
    
  3. Clase final:

    • Una clase declarada como final no puede tener subclases (no puede ser heredada).
    • Esto se usa para garantizar la inmutabilidad de la clase y prevenir la extensión de su funcionalidad.
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Error de compilación - no se puede heredar de una clase final