欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin 匿名類實現(xiàn)接口和抽象類的區(qū)別詳解

 更新時間:2020年03月16日 12:39:38   作者:afunyusong  
這篇文章主要介紹了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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論