open class OpenBase(open val value: Int)
interface AnotherExample {
val anotherValue: OpenBase
}
open class OpenChild(value: Int) : OpenBase(value), AnotherExample {
override var value: Int = 1000
get() = field - 7
override val anotherValue: OpenBase = OpenBase(value)
}
open class AnotherChild(value: Int) : OpenChild(value) {
final override var value: Int = value
get() = field
set(value) { field = value * 2 }
final override val anotherValue: OpenChild = OpenChild(value)
}
fun main() {
val openChild = OpenChild(42)
println("OpenChild value: ${openChild.value}")
println("OpenChild anotherValue: ${openChild.anotherValue.value}")
val anotherChild = AnotherChild(42)
println("AnotherChild value: ${anotherChild.value}")
println("AnotherChild anotherValue: ${anotherChild.anotherValue.value}")
anotherChild.value=69 //HERE
println("AnotherChild value: ${anotherChild.value}")
println("AnotherChild anotherValue: ${anotherChild.anotherValue.value}")
}
I was learning kotlin OOPS and was playing with an example; I was expecting an error but got no error. Why am I able to modify the value mentioned final?