A default method is an interface function with a body. An implementing class may inherit that behavior instead of redefining it, while still implementing abstract interface methods. section 4.1.1
Providing and resolving default behavior
interface Clickable { fun click() fun showOff() = println("I'm clickable!") } interface Focusable { fun showOff() = println("I'm focusable!") } class Button : Clickable, Focusable { override fun click() = println("I was clicked") override fun showOff() { super<Clickable>.showOff() super<Focusable>.showOff() } } Button().showOff() // I'm clickable! // I'm focusable! A class may omit showOff when only one inherited default exists. When multiple interfaces provide that method, Kotlin requires an explicit override; the implementation can call either or both inherited versions with super<Type>.
