> Как работают final и static в Kotlin и Java (Kotlin, Java, Android)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Одноклассники
Стек: Kotlin, Java, Android
> Пример ответа
В Java final для переменной означает, что её нельзя переназначить (для примитивов - значение, для ссылок - саму ссылку). Для класса - запрет наследования, для метода - запрет переопределения. static - принадлежность классу, а не экземпляру: статические поля и методы доступны без создания объекта, статические вложенные классы не имеют доступа к нестатическим членам внешнего класса.
В Kotlin final является поведением по умолчанию для классов и методов - чтобы разрешить наследование, нужно явно указать open. Для переменных final заменяется на val (неизменяемая ссылка). static в Kotlin отсутствует как ключевое слово; его роль выполняют:
companion object- объект-компаньон внутри класса, члены которого вызываются как статические (например,MyClass.foo()), но на самом деле это синглтон, привязанный к классу.- Функции и свойства верхнего уровня (вне класса) - компилируются в статические методы/поля Java.
@JvmStatic- аннотация для методов внутриcompanion object, чтобы они генерировались как настоящие статические методы Java.
Пример: в Java public static final int MAX = 10; в Kotlin пишется как const val MAX = 10 (только для примитивов и строк) внутри companion object или на верхнем уровне.
> Похожие задачи по mobile
Что такое smart cast в Kotlin
Как остановить корутину и гарантированно отменить ее в Kotlin
Каким ключевым словом обозначаются параметры конструктора в data class Kotlin, если они используются только в init блоке
Почему нельзя создать экземпляр класса Nothing в Kotlin
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью