final при наследовании в Kotlin
Класс без open уже нельзя унаследовать - это поведение
по умолчанию. Явно запрет записывают словом final
перед class:
final class Config
// class ExtendedConfig : Config() // ошибка
В открытом классе отдельный метод можно закрыть для переопределения.
Такой метод помечают final (это значение по умолчанию
для методов без open):
open class User {
fun getId(): String {
return "user-1"
}
open fun setName(name: String) {
// ...
}
}
class Employee : User() {
// override fun getId() // ошибка: метод final
}
Открытый метод можно явно закрыть для переопределения:
open class User {
open fun setName(name: String) {
// ...
}
final fun getVersion(): Int {
return 1
}
}
Объявите класс AppSettings
с модификатором final.
Попробуйте объявить класс-наследник
от класса AppSettings и убедитесь,
что код не компилируется.