Sobes.tech
Junior — Middle

Is it possible to override a field declared with the lateinit property?

sobes.tech AI

Answer from AI

In Kotlin, a property declared with the lateinit modifier cannot be overridden in a subclass using lateinit again.

The reason is that lateinit is only applied to var properties that do not have an initial value but will be initialized later. When overriding a property in a subclass, you cannot change its modifiers in such a way as to redeclare lateinit.

If a property in the base class is declared as lateinit var, it can be overridden in the subclass as a regular property with initialization or with a getter/setter, but not with lateinit.

Example:

open class Base {
    lateinit var data: String
}

class Derived : Base() {
    override var data: String = "Initialized"
}

Here, in Derived, the property data is overridden without lateinit, with initialization.

Thus, overriding a lateinit field is possible, but it cannot be redeclared with lateinit.

Is it possible to override a field declared with the… - sobes.tech