abstract class A { protected abstract fun doIt(vararg args: T): String fun test() = doIt() } class B : A() { override fun doIt(vararg args: Void): String = "OK" }