Ответ
Да, класс может быть объявлен как final. Это ключевое слово запрещает наследование от этого класса, обеспечивая безопасность и неизменяемость его поведения.
Зачем это нужно:
- Защита от наследования: Гарантирует, что логика класса (например, иммутабельного класса-значения) не будет изменена в подклассах.
- Безопасность: Предотвращает переопределение методов, что критично для классов, отвечающих за безопасность (например,
String). - Оптимизация: Компилятор может применять дополнительные оптимизации, зная, что у класса нет наследников.
Пример:
final class ImmutablePoint {
private final int x;
private final int y;
public ImmutablePoint(int x, int y) {
this.x = x;
this.y = y;
}
// Геттеры...
}
// Ошибка компиляции: Cannot inherit from final 'ImmutablePoint'
// class ExtendedPoint extends ImmutablePoint {}
Все основные классы-обёртки (String, Integer, Double) в Java объявлены как final.