abstract class My(val v: Int) { // Ok: variable is just abstract abstract var x: Int open var y: Int open var z: Int // Ok: initializer available open var w: Int = v set(arg) { field = arg } // Ok: no backing field, no initializer possible open var u: Int get() = w set(arg) { w = 2 * arg } constructor(): this(0) { z = v } init { x = 1 y = 2 u = 3 } }