我可以省略Kot​​lin中不使用的接口方法吗?

如果我只对onSee感兴趣而不关心其他事件呢? 我可以至少省略没有返回值的方法吗?

 interface EventHandler { fun onSee() fun onHear() fun onSmell() fun onTouch() fun onAwake() fun onSleep() } fun addEventHandler(handler:EventHandler) { } fun Main() { addEventHandler(object:EventHandler { override fun onSee() { print("I see.") } }) } 

当然你只能实现一个接口方法,你所要做的就是在接口声明中为其他方法提供一个默认实现

 interface EventHandler { fun onSee() fun onHear() { // default implementation} fun onSmell(){ // default implementation} fun onTouch(){ // default implementation} fun onAwake(){ // default implementation} fun onSleep(){ // default implementation} } 

现在当你创建这个接口的实例时,你只需要提供onSee()方法的强制实现, 其余的都是可选的

如果您不是原始界面的作者您可以扩展原始界面并为您想要的方法提供默认实现

 interface OnSeeEventHandler: EventHandler { override fun onHear() { // default implementation} override fun onSmell(){ // default implementation} override fun onTouch(){ // default implementation} override fun onAwake(){ // default implementation} override fun onSleep(){ // default implementation} } 

并使用OnSeeEventHandler仅提供onSee方法实现