Kotlin 匿名类实现接口和抽象类的区别详解
作者:afunyusong 发布时间:2021-09-04 07:14:58
标签: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
来源:https://blog.csdn.net/afanyusong/article/details/77866953


猜你喜欢
- 本文实例讲述了Android编程实现自动检测版本及自动升级的方法。分享给大家供大家参考,具体如下:步骤:1.检测当前版本的信息Android
- 如下所示:package java.util;public interface Enumeration<E> { boolean
- hibernate一级缓存和二级缓存的区别缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用
- 1.常见字符串编码常见的字符串编码有:LATIN1 只能保存ASCII字符,又称ISO-8859-1。UTF-8 变长字节编码,一个字符需要
- 本文实例讲述了C#把数组中的某个元素取出来放到第一个位置的实现方法。分享给大家供大家参考。具体分析如下:如何取出数组中符合某种条件的元素,然
- 使用AOP的原因(AOP简介)我们知道,spring两大核心,IOC(控制反转)和AOP(切面),那为什么要使用AOP,AOP是什么呢,严格
- 大多数网站会设置用户权限,如过滤非法用户,用户不登录时不能进行访问,或者设置访问的权限,如部分内容仅对VIP开放等等,这些权限的控制都可以用
- 前言最近在网上看到一篇文章,里面说到:List<T>.FindAll的效率竟然比for循环还差,下面是文章的截图:我在上文代码基
- Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密Android安全加密:消息摘要Mess
- 本文实例为大家分享了Android播放音乐案例的具体实现代码,供大家参考,具体内容如下效果:分析:和上一篇文章的结构是一样的,只不过我们需要
- 一、背景即使我电脑安装的JDK版本是8,然而在idea运行中常常提示xxjdk1.5已过时之类的,why?明明是我装的JDK8啊二、解决鼠标
- 1、背景最近用到了Spring Cloud Alibaba开发微服务,在开发的过程中发现,当我们的服务上线或下线的时候,我们的Spring
- 本文实例介绍了基于socket和javaFX简单文件传输工具,分享给大家供大家参考,具体内容如下package application;im
- 最新需要在项目启动后立即执行某个方法,然后特此记录下找到的四种方式注解@PostConstruct使用注解@PostConstruct是最常
- Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占
- 本文实例为大家分享了java实现登录验证码功能的具体代码,供大家参考,具体内容如下登录验证码登录验证是大多数登录系统都会用到的一个功能,它的
- 在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked ex
- 本文实例为大家分享了android点击按钮切换不同布局的具体代码,供大家参考,具体内容如下先上效果图:如图所示,实现点击下面的按钮切换不同的
- jol(java object layout)需要的依赖<dependency> <
- 废话不多说了,直接给大家贴代码了,具体代码如下<?xml version="1.0" encoding="