package sample trait S { fun foo(t: T): T val some: T? get var other: T? get set } open abstract class S1 : S class S2 : S1() { override val some: String = "S" override var other: String? get() = null set(value) {} override fun foo(t: String): String { return super.foo(t) } }