Sobes.tech
Junior

O que significa a palavra-chave 'final' na linguagem de programação Java?

sobes.tech IA

Resposta da IA

A palavra-chave final em Java é usada para indicar que uma variável, método ou classe não podem ser modificados.

  1. Variável final:

    • A uma variável declarada como final, seu valor só pode ser atribuído uma vez. Após a atribuição, ela não pode ser alterada.
    • Para tipos de dados primitivos, o valor de uma variável final é uma constante.
    • Para tipos de dados referenciais, final significa que a referência ao objeto não pode ser alterada, mas o estado do objeto (seus campos) pode ser modificado (a menos que os campos do próprio objeto também sejam final).
    final int MAX_VALUE = 100; // variável final primitiva
    
    final List<String> names = new ArrayList<>(); // variável referencial final
    names.add("Alice"); // OK
    // names = new ArrayList<>(); // Erro de compilação - não é possível reatribuir a referência
    
  2. Método final:

    • Um método declarado como final não pode ser sobrescrito em subclasses.
    • Isso é usado para evitar alterações indesejadas no comportamento na hierarquia de herança.
    class Parent {
        final void display() {
            System.out.println("Este é um método final.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Erro de compilação - não é possível sobrescrever um método final
    }
    
  3. Classe final:

    • Uma classe declarada como final não pode ter subclasses (não pode ser herdada).
    • Isso é usado para garantir a imutabilidade da classe e prevenir a extensão de sua funcionalidade.
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Erro de compilação - não é possível herdar de uma classe final