Sobes.tech
Junior

Ką reiškia raktinis žodis 'final' Java programavimo kalboje?

sobes.tech AI

Atsakymas iš AI

Java final raktas žodis naudojamas nurodyti, kad kintamasis, metodas ar klasė negali būti pakeista:

  1. final kintamasis:

    • final deklaruotas kintamasis gali būti priskirtas tik vieną kartą. Po priskyrimo jis negali būti pakeistas:
    • Primitivių tipų atveju final kintamojo reikšmė yra konstanta:
    • Nuorodų tipų atveju final kintamasis reiškia, kad nuoroda į objektą negali būti pakeista, tačiau objekto būklė (jo laukai) gali būti keičiama (jei tik laukai nėra final):
    final int MAX_VALUE = 100; // final primitivas
    
    final List<String> names = new ArrayList<>(); // final nuoroda
    names.add("Alice"); // OK
    // names = new ArrayList<>(); // Kompiliatoriaus klaida - nuoroda negali būti perrašyta
    
  2. final metodas:

    • Metodas, deklaruotas kaip final, negali būti perrašytas (overridden) pogrupiuose:
    • Tai naudojama siekiant išvengti nenorimų elgsenos pakeitimų paveldėjimo hierarchijoje:
    class Parent {
        final void display() {
            System.out.println("This is a final method.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Kompiliatoriaus klaida - `final` metodas negali būti perrašytas
    }
    
  3. final klasė:

    • Klasė, deklaruota kaip final, negali turėti pogrupių (negali būti paveldima):
    • Tai naudojama užtikrinti, kad klasė nėra keičiama ir neleidžiama išplėsti jos funkcionalumo:
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Kompiliatoriaus klaida - `final` klasė negali būti paveldima