Sobes.tech
Junior

Que signifie le mot-clé 'final' dans le langage de programmation Java?

sobes.tech IA

Réponse de l'IA

Le mot-clé final en Java est utilisé pour indiquer qu'une variable, une méthode ou une classe ne peuvent pas être modifiées.

  1. Variable final :

    • À une variable déclarée comme final, sa valeur ne peut être assignée qu'une seule fois. Après l'assignation, elle ne peut pas être modifiée.
    • Pour les types de données primitifs, la valeur d'une variable final est une constante.
    • Pour les types de données référentiels, final signifie que la référence à l'objet ne peut pas être changée, mais l'état de l'objet (ses champs) peut être modifié (sauf si les champs eux-mêmes sont final).
    final int MAX_VALUE = 100; // variable primitive finale
    
    final List<String> names = new ArrayList<>(); // variable référentielle finale
    names.add("Alice"); // OK
    // names = new ArrayList<>(); // Erreur de compilation - impossible de réassigner la référence
    
  2. Méthode final :

    • Une méthode déclarée comme final ne peut pas être redéfinie dans les sous-classes.
    • Cela est utilisé pour empêcher toute modification indésirable du comportement dans la hiérarchie d'héritage.
    class Parent {
        final void display() {
            System.out.println("Ceci est une méthode finale.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Erreur de compilation - impossible de redéfinir une méthode finale
    }
    
  3. Classe final :

    • Une classe déclarée comme final ne peut pas avoir de sous-classes (ne peut pas être héritée).
    • Cela est utilisé pour assurer l'immuabilité de la classe et empêcher l'extension de ses fonctionnalités.
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Erreur de compilation - impossible d'hériter d'une classe finale