open class C { open var p2 = "" set(value) { field = "" + value } } class C1: C() { override var p2 = super.p2 + "" set(value) { super.p2 = value field = "" + super.p2 } } open class C2: C() { } class C3: C2() { override var p2 = super.p2 + "" set(value) { super.p2 = value field = "" + super.p2 } } fun main(args: Array) { val c1 = C1() val c3 = C3() c1.p2 = "zzz" c3.p2 = "zzz" println(c1.p2) println(c3.p2) }