Kotlin 匿名类实现接口和抽象类的区别详解
时间:2022-07-27
本文章向大家介绍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 匿名类实现接口和抽象类的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考。
- BZOJ 4152: [AMPPZ2014]The Captain(最短路)
- js获取div编辑框,textarea,input text的光标位置,兼容FF和IE
- BZOJ 4289: PA2012 Tax(最短路)
- php QR Code二维码生成类
- BZOJ 3714: [PA2014]Kuglarz(最小生成树)
- 我的HTML总结之表单
- php 二维码生成类
- HDU 2516 取石子游戏(斐波那契博弈)
- angularjs MVC、模块化、依赖注入详解
- BZOJ 2940: [Poi2000]条纹(Multi-Nim)
- PHP页面跳转代码
- angularjs 控制器、作用域、广播详解
- 多个域名向主域名自动跳转的Nginx配置
- angularjs 服务详解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 五分钟C语言数据结构 之 二叉树先序遍历
- Java 语言基础(常用设计原则和设计模式,常用 Java 8~11 新特性)
- 五分钟C语言数据结构 之 二叉树后序遍历(非递归很重要)
- 5分钟Flink - 自定义Source源
- 9.深入k8s:调度器及其源码分析
- 5分钟Flink - 自定义Data Sink
- 5分钟Flink - 流处理API转换算子集合
- 视频上云/网络穿透/网络映射服务EasyNTS前端组织添加页面出现Vue冲突怎么解决?
- Pinpoint 一款强大的APM工具
- 1. Pandas系列 - 基本数据结构
- 6 年前,只会 JSP 和 Servlet 就可以找到工作
- Python文件处理实用指南
- 2. Pandas系列 - Series基本功能
- 1.3 广告算法专题 - 交叉验证
- 最好用的内网穿透工具合集