interface I { fun foo(x: Int = 23): String } abstract class Base : I class C : Base(), I { override fun foo(x: Int) = "C:$x" } fun box(): String { val x: I = C() val r = x.foo() + ";" + x.foo(42) if (r != "C:23;C:42") return "fail: $r" return "OK" }