Kotlin 匿名類實現接口和抽象類的區(qū)別詳解
我就廢話不多說了,還是上代碼吧
接口:
interface OnBind {
fun onBindChildViewData(holder: String, itemData: Any, position: Int)
}
lesson.does(object : OnBind {
override fun onBindChildViewData(holder: String, itemData: Any, position: Int) {
println(holder + itemData + position)
}
})
抽象類:
abstract class AbstractOnBind {
abstract fun onBindChildViewData(holder: String, itemData: Any, position: Int)
}
lesson.does(object : AbstractOnBind() {
override fun onBindChildViewData(holder: String, itemData: Any, position: Int) {
println(holder + itemData + position)
}
})
看到區(qū)別了嗎?哈哈,看不到沒關系,我告訴你。
他們之間唯一的區(qū)別就是調用時的下面這句,抽象類多了一個括號。
object : OnBind
object : AbstractOnBind()
就這么一點區(qū)別,其實本質上是完全不一樣的。
在實現接口時,object 代替了 java 中 new 一個對象,在這里“:“ 號后緊跟接口,接口沒有構造方法,代表了object實現了這個接口;
而在實現抽象類的時候,抽象方法后邊有(),可以理解為調用了抽象方法的構造方法,“new“出了一個對象后,賦給了object。
總結一下:為便于理解可以這么想(實際原理可能并不是這樣),接口時,先有 object ,然后讓 object 實現該接口;抽象類時,先實現抽象類中的抽象方法,用構造方法構造出一個對象后,再給到 object
以上這篇Kotlin 匿名類實現接口和抽象類的區(qū)別詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
AndroidStudio接入Unity工程并實現相互跳轉的示例代碼
這篇文章主要介紹了AndroidStudio接入Unity工程并實現相互跳轉,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
Android性能優(yōu)化之RecyclerView分頁加載組件功能詳解
這篇文章主要為大家介紹了Android性能優(yōu)化之RecyclerView分頁加載組件功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Android Handler之消息循環(huán)的深入解析
本篇文章是對Handler消息循環(huán)進行了詳細的分析介紹,需要的朋友參考下2013-05-05
Android 開發(fā)中根據搜索內容實現TextView中的文字部分加粗
最近遇到一個需求,需要做一個搜索功能。搜索的內容需要加粗顯示。實現方法很簡單,下面通過本文給大家分享Android 開發(fā)中根據搜索內容實現TextView中的文字部分加粗樣式,非常不錯,需要的朋友參考下2017-03-03

