abstract class A { abstract fun test(a: T, b:Boolean = false) : String } class B : A() { override fun test(a: String, b: Boolean): String { return a } } fun box(): String { return B().test("OK") }