Можно ли переопределить поле lateinit

«Можно ли переопределить поле lateinit» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, lateinit поле нельзя переопределить в подклассе, так как оно не может быть open. lateinit требует явной инициализации перед использованием, а переопределение нарушило бы эту гарантию.

open class Parent {
    lateinit var name: String // Нельзя сделать open!
}

class Child : Parent() {
    // Ошибка: 'lateinit' modifier is not allowed on overridden properties
    // override lateinit var name: String  
}

Если нужно переопределить свойство, используйте обычное свойство с отложенной инициализацией через by lazy или nullable-тип.