Sobes.tech
Junior

Co znamená klíčové slovo 'final' v jazyce Java?

sobes.tech AI

Odpověď od AI

Klíčové slovo final v jazyce Java se používá k označení, že proměnná, metoda nebo třída nem mohou být změněny.

  1. Proměnná final:

    • Proměnná deklarovaná jako final může být přiřazena pouze jednou. Po přiřazení již nemůže být změněna.
    • U primitivních datových typů je hodnota proměnné final konstantou.
    • U referenčních typů znamená final, že odkaz na objekt nemůže být změněn, ale stav objektu (jeho pole) může být změněn (pokud pole samotného objektu nejsou final).
    final int MAX_VALUE = 100; // final primitivní proměnná
    
    final List<String> names = new ArrayList<>(); // final referenční proměnná
    names.add("Alice"); // OK
    // names = new ArrayList<>(); // Chyba kompilace - nelze přepsat odkaz
    
  2. final metoda:

    • Metoda deklarovaná jako final nemůže být přepsána v podtřídách.
    • To se používá k zabránění nechtěných změn chování v hierarchii dědičnosti.
    class Parent {
        final void display() {
            System.out.println("Toto je finální metoda.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Chyba kompilace - nelze přepsat finální metodu
    }
    
  3. final třída:

    • Třída deklarovaná jako final nemůže mít podtřídy (nemůže být děděna).
    • To se používá k zajištění neměnnosti třídy a zabránění rozšiřování její funkčnosti.
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Chyba kompilace - nelze dědit z finální třídy