当前位置: 首页 > 编程笔记 >

Kotlin 匿名类实现接口和抽象类的区别详解

高和通
2023-03-14
本文向大家介绍Kotlin 匿名类实现接口和抽象类的区别详解,包括了Kotlin 匿名类实现接口和抽象类的区别详解的使用技巧和注意事项,需要的朋友参考一下

我就废话不多说了,还是上代码吧

接口:

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 匿名类实现接口和抽象类的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 在Java中,可以扩展带有匿名类的接口,该类可以动态实现。例: (更多信息:http : //www.techartifact.com/blogs/2009/08/anonymous-classes-in-java.html#ixzz1k07mVIeO) 这在C#中可能吗?如果不是,那么有什么可行的替代方法而不必依赖于实现过多的子类? 问题答案: 不,您不能在C#中做到这一点-但通常,

  • 本文向大家介绍Kotlin 创建接口或者抽象类的匿名对象实例,包括了Kotlin 创建接口或者抽象类的匿名对象实例的使用技巧和注意事项,需要的朋友参考一下 一 ,定义接口和抽象类 二,创建对应的匿名对象 补充知识:android Kotlin 继承、派生、接口、构造方式,方法、属性重写 前言 kotlin 作为google官方android 开发语言,大势所趋,据传到2018底kotlin要全面替

  • 本文向大家介绍C++ 抽象类和接口的区别?相关面试题,主要包含被问及C++ 抽象类和接口的区别?时的应答技巧和注意事项,需要的朋友参考一下 类型 abstract class Interface 定义 abstract class关键字 Interface关键字 继承 抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类 接口只可以继承接口(一个或多个);子类可以实现多个接口 访问修饰符

  • 理解抽象 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意。 其实,

  • 本文向大家介绍详细解析Java中抽象类和接口的区别,包括了详细解析Java中抽象类和接口的区别的使用技巧和注意事项,需要的朋友参考一下 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至

  • 本文向大家介绍接口和抽象类的区别是什么?相关面试题,主要包含被问及接口和抽象类的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:抽象类 Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于: 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。 类可以实现很多个接口,但是只能继承一个抽象类 类可以不实现抽象类和接口声明的所有方法,当然,在这种情