Sobes.tech
Junior

Wat betekent het sleutelwoord 'final' in de programmeertaal Java?

sobes.tech AI

Antwoord van AI

Het sleutelwoord final in Java wordt gebruikt om aan te geven dat een variabele, methode of klasse niet kan worden gewijzigd.

  1. final variabele:

    • Aan een variabele die als final is gedeclareerd, kan slechts één keer een waarde worden toegekend. Na toewijzing kan deze niet worden gewijzigd.
    • Voor primitieve datatypes is de waarde van een final variabele een constante.
    • Voor referentietypen betekent final dat de verwijzing naar het object niet kan worden gewijzigd, maar de toestand van het object (zijn velden) kan worden gewijzigd (tenzij de velden zelf ook final zijn).
    final int MAX_VALUE = 100; // finale primitieve variabele
    
    final List<String> names = new ArrayList<>(); // finale referentievariabele
    names.add("Alice"); // OK
    // names = new ArrayList<>(); // Compileerfout - referentie kan niet opnieuw worden toegewezen
    
  2. final methode:

    • Een methode gedeclareerd als final kan niet worden overschreven in subklassen.
    • Dit wordt gebruikt om ongewenste gedragswijzigingen in de erfhiërarchie te voorkomen.
    class Parent {
        final void display() {
            System.out.println("Dit is een finale methode.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Compileerfout - final methode kan niet worden overschreven
    }
    
  3. final klasse:

    • Een klasse gedeclareerd als final kan geen subklassen hebben (kan niet worden uitgebreid).
    • Dit wordt gebruikt om de onveranderlijkheid van de klasse te garanderen en het uitbreiden van functionaliteit te voorkomen.
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Compileerfout - kan niet erven van een finale klasse