Ответ
Ключевое слово final используется для запрета наследования или переопределения элемента кода.
Применение:
final class— запрещает наследование от класса.final func— запрещает переопределение метода в подклассах.final var— запрещает переопределение свойства.
Пример:
class Vehicle {
// Этот метод нельзя переопределить в подклассах
final func startEngine() {
print("Двигатель запущен")
}
}
class Car: Vehicle {
// Ошибка компиляции: Cannot override 'final' method
// override func startEngine() { ... }
}
// Этот класс нельзя унаследовать
final class UtilityVehicle: Vehicle {}
// Ошибка: Inheritance from a final class 'UtilityVehicle'
// class Truck: UtilityVehicle {}
Зачем это нужно?
- Безопасность и дизайн: Защищает критически важную логику от случайного или некорректного изменения в наследниках. Явно указывает на намерение разработчика.
- Оптимизация производительности: Компилятор может применять более агрессивные оптимизации (например, прямые вызовы или встраивание), зная, что реализация
final-метода никогда не изменится. - Упрощение анализа: Уменьшает сложность иерархии классов, что облегчает чтение и поддержку кода.