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()
}
}