Kotlin匿名类实现接口和抽象类有什么区别

这篇文章主要介绍Kotlin匿名类实现接口和抽象类有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

融安网站建设公司创新互联建站,融安网站设计制作,有大型网站制作公司丰富经验。已为融安近1000家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的融安做网站的公司定做!

接口:

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

看到区别了吗?哈哈,看不到没关系,我告诉你。

他们之间唯一的区别就是调用时的下面这句,抽象类多了一个括号。

object : OnBind
object : AbstractOnBind()

就这么一点区别,其实本质上是完全不一样的。

在实现接口时,object 代替了 java 中 new 一个对象,在这里“:“ 号后紧跟接口,接口没有构造方法,代表了object实现了这个接口;

而在实现抽象类的时候,抽象方法后边有(),可以理解为调用了抽象方法的构造方法,“new“出了一个对象后,赋给了object。

总结一下:为便于理解可以这么想(实际原理可能并不是这样),接口时,先有 object ,然后让 object 实现该接口;抽象类时,先实现抽象类中的抽象方法,用构造方法构造出一个对象后,再给到 object

以上是“Kotlin匿名类实现接口和抽象类有什么区别”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


当前标题:Kotlin匿名类实现接口和抽象类有什么区别
文章URL:http://hbruida.cn/article/joegss.html