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