Ответ
Ключевое слово final в Java применяется для объявления сущностей, которые не могут быть изменены после их первоначального определения.
Применение в трёх контекстах:
-
finalпеременная/поле: Значение может быть присвоено только один раз (константа).final int MAX_USERS = 100; // MAX_USERS = 200; // Ошибка компиляции: cannot assign a value to final variableДля ссылочных типов неизменна сама ссылка, но состояние объекта можно менять.
final List<String> list = new ArrayList<>(); list.add("Hello"); // Можно: изменяется объект, а не ссылка // list = new ArrayList<>(); // Ошибка: нельзя изменить ссылку -
finalметод: Невозможно переопределить (override) в дочерних классах.class Parent { final void secureMethod() { System.out.println("Этот метод нельзя изменить."); } } class Child extends Parent { // void secureMethod() { ... } // Ошибка компиляции } -
finalкласс: Невозможно унаследовать (extend).final class ImmutableClass { /* ... */ } // class SubClass extends ImmutableClass { } // Ошибка компиляции
Зачем это нужно? Для обеспечения безопасности, неизменяемости (immutability), проектирования API и предотвращения случайных изменений.