我可以省略在Kotlin中不使用的接口方法吗? [英] Can I omit the interface methods I do not use in Kotlin?
问题描述
如果我只对onSee
感兴趣而不关心其他事件怎么办?我至少可以忽略没有返回值的方法吗?
What if I am only interested in onSee
and do not care for other events? Can I at least omit the methods that have no return values?
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.")
}
})
}
推荐答案
确保您只能实现一个接口方法,您要做的就是在接口声明中为其他方法提供默认实现
Sure you can only implement one interface method, all you have to do is to provide a default implementation for the other methods in the interface declaration
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()
方法提供强制实施,其余为可选
Now when you create an instance of this interface you only need to provide a compulsory implementation for onSee()
method, rest are optional
如果您不是原始界面的作者 您可以扩展原始接口,并为所需的方法提供默认实现
If you're not the author of the original interface You could extend the original interface and provide a default implementation for the methods you want
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
方法实现
这篇关于我可以省略在Kotlin中不使用的接口方法吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!