Встречается на собеседованиях • сегодня

Что становится неизменяемым при использовании final: класс или экземпляр класса

Ключевое слово final делает неизменяемым сам класс, а не его экземпляры. Класс, объявленный как final, нельзя наследовать (расширять). Однако экземпляры такого класса остаются изменяемыми, если их поля не помечены как final или не имеют других ограничений.

Пример:

java
final class ImmutableClass {  // Нельзя наследовать
    private int value;

    public ImmutableClass(int value) {
        this.value = value;
    }

    public void setValue(int value) {  // Метод изменяет состояние
        this.value = value;
    }
}

// Ошибка компиляции: нельзя наследовать final-класс
// class ChildClass extends ImmutableClass {}

Экземпляры ImmutableClass можно изменять через setValue(). Для неизменяемости экземпляров нужно делать поля final и не предоставлять сеттеров.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы