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

作者:afunyusong 时间:2021-09-04 07:14:58 

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

接口:


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

来源:https://blog.csdn.net/afanyusong/article/details/77866953

标签:Kotlin,匿名类,接口,抽象类
0
投稿

猜你喜欢

  • Android编程实现图片的浏览、缩放、拖动和自动居中效果

    2021-06-04 15:01:39
  • C# Dynamic关键字之:调用属性、方法、字段的实现方法

    2022-09-22 04:23:39
  • 完美实现ExpandableListView二级分栏效果

    2021-07-18 20:04:13
  • Android WebView支持input file启用相机/选取照片功能

    2023-09-15 07:56:48
  • C#/Java连接sqlite与使用技巧

    2021-07-10 08:34:05
  • C#中out保留字用法实例分析

    2021-07-28 18:44:54
  • C# 使用CancellationTokenSource取消多线程

    2023-11-15 00:31:54
  • Java设计模式之代理模式_动力节点Java学院整理

    2021-08-24 05:55:18
  • 使用IntelliJ IDEA搭建SSM框架的图文教程

    2022-06-14 00:56:19
  • C#调用和实现WebService,纯手工打造!

    2023-12-12 14:58:30
  • C#多线程系列之async和await用法详解

    2021-05-28 18:19:08
  • SpringBoot Test类注入失败的解决

    2023-05-20 13:59:40
  • 使用@Order控制配置类/AOP/方法/字段的加载顺序详解

    2023-09-05 17:34:35
  • SpringBoot2.x 参数校验问题小结

    2023-05-22 02:21:22
  • Android中卡顿优化布局详细介绍

    2022-10-28 10:53:00
  • 在spring中手写全局异常拦 截器

    2023-11-09 01:25:42
  • springboot如何通过URL方式访问外部资源

    2022-02-07 01:10:15
  • java使用jaxb操作xml示例

    2023-11-05 15:02:18
  • Android高级组件AutoCompleteTextView自动完成文本框使用详解

    2022-04-19 07:49:28
  • JAVA版排序算法之快速排序示例

    2023-04-20 04:37:53
  • asp之家 软件编程 m.aspxhome.com