Kotlin 匿名类实现接口和抽象类的区别
来源:互联网 发布:萨维尔街 知乎 编辑:程序博客网 时间:2024/06/06 06:48
上代码
接口:
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
阅读全文
0 0
- Kotlin 匿名类实现接口和抽象类的区别
- 抽象类 接口 匿名类的区别
- Kotlin-抽象类和接口
- java中抽象类和接口的一般实现和特殊实现(匿名类)
- Kotlin——抽象类和接口
- Java接口和抽象类的特殊实现方法(匿名类)
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- 类的抽象和接口的区别
- 抽象类和接口类的区别
- 抽象类和接口类的区别
- 接口类和抽象类的区别
- 接口类和抽象类的区别
- 接口类和抽象类的区别
- 接口类和抽象类的区别
- 抽象类和抽象方法以及和接口的区别
- 【Python大法好】汇总
- c语言传递参数
- 怎么查看gcc默认的include路径
- 分布式事务"解决方案汇总 -- 2PC/TCC/事务消息/1PC
- Map和Map.Entry,增强for循环
- Kotlin 匿名类实现接口和抽象类的区别
- jackson的基本操作
- Handler学习笔记
- Guided Image Filtering
- 串口驱动程序设计详解---串口打开、发送、接收(下)
- Git常用命令
- 创建maven项目时,提示 overlaps the workspace location
- TLS/SSL 协议详解 (4) 运用密码学原理构建安全信道2
- 【安全牛学习笔记】 Kali Linux安装-熟悉环境