open class Base( open val name : String){
init {
println("initializing base with name = $name")
}
open val size : Int = name.length.also {
println("Initializing size in base with $it")
}
}
class Derived constructor(override val name: String, val lastName : String) : Base(name){
override val size : Int = (name.length + lastName.length).also {
println("Initialzing derived size with $it")
}
}
fun main(){
val derived = Derived("Tarun", "Chawla")
var base : Base = derived
println(base.size)
}
При запуске выдается исключение NULL, и kotlin не видит его.
Exception in thread "main" java.lang.NullPointerException
at Base.<init>(main.kt:5)
at Derived.<init>(main.kt:9)
at MainKt.main(main.kt:15)
at MainKt.main(main.kt)
Сначала я не могу понять причину, по которой имя является нулевым в базовом классе, и как это обошло kotlin.