Sobes.tech
Junior

Какво означава ключовата дума 'final' в езика за програмиране Java?

sobes.tech AI

Отговор от AI

Ключовата дума final в Java се използва, за да се посочи, че променлива, метод или клас не могат да бъдат променяни.

  1. Променлива final:

    • Променлива, обявена като final, може да бъде присвоена само веднъж. След присвояване, тя не може да бъде променена.
    • За примитивните типове данни, стойността на final променливата е константа.
    • За референтните типове, final означава, че референцията към обекта не може да бъде променена, но състоянието на обекта (неговите полета) може да бъде променяно (ако полетата на обекта не са final).
    final int MAX_VALUE = 100; // финална примитивна променлива
    
    final List<String> names = new ArrayList<>(); // финална референтна променлива
    names.add("Alice"); // ОК
    // names = new ArrayList<>(); // Грешка при компилация - не може да се преназначи референцията
    
  2. final метод:

    • Метод, обявен като final, не може да бъде презаписан в подкласове.
    • Това се използва за предотвратяване на нежелани промени в поведението в йерархията на наследяване.
    class Parent {
        final void display() {
            System.out.println("Това е финален метод.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Грешка при компилация - не може да се презапише финален метод
    }
    
  3. final клас:

    • Клас, обявен като final, не може да има подкласове (не може да бъде наследен).
    • Това се използва за гарантиране на неизменяемостта на класа и предотвратяване на разширяване на неговата функционалност.
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Грешка при компилация - не може да наследява от финален клас