Назад к вопросам
Junior
93
questionbank

Что означает ключевое слово 'final' в языке программирования Java?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

  1. final переменная:

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

    • Метод, объявленный как final, не может быть переопределен (overridden) в подклассах.
    • Это используется для предотвращения нежелательного изменения поведения в иерархии наследования.
    class Parent {
        final void display() {
            System.out.println("This is a final method.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Ошибка компиляции - нельзя переопределить final метод
    }
    
  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 { } // Ошибка компиляции - нельзя наследовать final класс