I do not understand why in this code values of i and s are 0 and null respectively in init{} block but in second constructor of class B these values are 200 and param2?
class A(override var i: Int, override var s: String) : B(200, "param2","param3") { init { println(i) println(s) } } open class B(open var i: Int, open var s: String) { init { println("class B init") println("i in init B2 is $i") println("s in init B2 is $s") } constructor(i: Int, s: String, s2: String) : this(i, s) { println("second constructor B") println(" i = $i in second constructor") println(" s = $s in second constructor") println(" s2 = $s2 in second constructor") } } fun main() { val ins2 = A(500, "500S") } results:
class B init i in init B2 is 0 s in init B2 is null second constructor B i = 200 in second constructor s = param2 in second constructor s2 = param3 in second constructor 500 500S I need some explication please.