1.接口
Kotlin 中的接口与 Java 8 非常类似. 接口中可以包含抽象方法的声明, 也可以包含方法的实现. 接口与抽象类的区别在于, 接口不能存储状态数据. 接口可以有属性, 但这些属性必须是抽象的, 或者必须提供访问器的自定义实现。
interface OnRefreshListener {
fun onRefresh()
}
2.接口实现
class ViewModel : OnRefreshListener{
override fun onRefresh() {
}
}
在kotlin中实现接口不需要像Java一样,在Java中实现接口是用过implements关键字而在kotlin中通过 :来实现。
3.接口中的属性
interface OnRefreshListener {
val mSize: Int
fun onRefresh()
}
class ViewModel : OnRefreshListener{
override val mSize: Int get() = 20
override fun onRefresh() {
}
}
4.解决覆盖冲突
实现的两个接口中方法同名时下面的操作可解决覆盖冲突
interface OnRefreshListener {
fun onRefresh()
fun onFinish(){}
}
interface OnLoadMoreListener {
fun onLoadMore()
fun onFinish(){}
}
class ViewModel : OnRefreshListener, OnLoadMoreListener{
override fun onLoadMore() {
}
override fun onRefresh() {
}
override fun onFinish() {
super<OnRefreshListener>.onFinish() // 或者 super<OnLoadMoreListener>.onFinish()
}
}