Sobes.tech
Junior

Co oznacza słowo kluczowe 'final' w języku programowania Java?

sobes.tech AI

Odpowiedź od AI

Słowo kluczowe final w Java jest używane do wskazania, że zmienna, metoda lub klasa nie mogą być zmienione.

  1. Zmienna final:

    • Zmienna zadeklarowana jako final może być przypisana tylko raz. Po przypisaniu nie można jej zmienić.
    • Dla typów danych prymitywnych, wartość zmiennej final jest stałą.
    • Dla typów referencyjnych, final oznacza, że odwołanie do obiektu nie może być zmienione, ale stan samego obiektu (jego pola) może być zmieniany (jeśli pola tego obiektu nie są również final).
    final int MAX_VALUE = 100; // final zmienna prymitywna
    
    final List<String> names = new ArrayList<>(); // final zmienna referencyjna
    names.add("Alice"); // OK
    // names = new ArrayList<>(); // Błąd kompilacji - nie można przypisać odwołania
    
  2. Metoda final:

    • Metoda zadeklarowana jako final nie może być nadpisana w podklasach.
    • Służy to do zapobiegania niepożądanym zmianom zachowania w hierarchii dziedziczenia.
    class Parent {
        final void display() {
            System.out.println("To jest metoda final.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Błąd kompilacji - nie można nadpisać metody final
    }
    
  3. Klasa final:

    • Klasa zadeklarowana jako final nie może mieć podklas (nie może być dziedziczona).
    • Służy to do zapewnienia niezmienności klasy i zapobiegania rozszerzaniu jej funkcjonalności.
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Błąd kompilacji - nie można dziedziczyć po klasie final