User-Profile-Image
hankin
  • 5
  • Java
  • Kotlin
  • Spring
  • Web
  • SQL
  • MegaData
  • More
  • Experience
  • Enamiĝu al vi
  • 分类
    • Zuul
    • Zookeeper
    • XML
    • WebSocket
    • Web Notes
    • Web
    • Vue
    • Thymeleaf
    • SQL Server
    • SQL Notes
    • SQL
    • SpringSecurity
    • SpringMVC
    • SpringJPA
    • SpringCloud
    • SpringBoot
    • Spring Notes
    • Spring
    • Servlet
    • Ribbon
    • Redis
    • RabbitMQ
    • Python
    • PostgreSQL
    • OAuth2
    • NOSQL
    • Netty
    • MySQL
    • MyBatis
    • More
    • MinIO
    • MegaData
    • Maven
    • LoadBalancer
    • Kotlin Notes
    • Kotlin
    • Kafka
    • jQuery
    • JavaScript
    • Java Notes
    • Java
    • Hystrix
    • Git
    • Gateway
    • Freemarker
    • Feign
    • Eureka
    • ElasticSearch
    • Docker
    • Consul
    • Ajax
    • ActiveMQ
  • 页面
    • 归档
    • 摘要
    • 杂图
    • 问题随笔
  • 友链
    • Spring Cloud Alibaba
    • Spring Cloud Alibaba - 指南
    • Spring Cloud
    • Nacos
    • Docker
    • ElasticSearch
    • Kotlin中文版
    • Kotlin易百
    • KotlinWeb3
    • KotlinNhooo
    • 前端开源搜索
    • Ktorm ORM
    • Ktorm-KSP
    • Ebean ORM
    • Maven
    • 江南一点雨
    • 江南国际站
    • 设计模式
    • 熊猫大佬
    • java学习
    • kotlin函数查询
    • Istio 服务网格
    • istio
    • Ktor 异步 Web 框架
    • PostGis
    • kuangstudy
    • 源码地图
    • it教程吧
    • Arthas-JVM调优
    • Electron
    • bugstack虫洞栈
    • github大佬宝典
    • Sa-Token
    • 前端技术胖
    • bennyhuo-Kt大佬
    • Rickiyang博客
    • 李大辉大佬博客
    • KOIN
    • SQLDelight
    • Exposed-Kt-ORM
    • Javalin—Web 框架
    • http4k—HTTP包
    • 爱威尔大佬
    • 小土豆
    • 小胖哥安全框架
    • 负雪明烛刷题
    • Kotlin-FP-Arrow
    • Lua参考手册
    • 美团文章
    • Java 全栈知识体系
    • 尼恩架构师学习
    • 现代 JavaScript 教程
    • GO相关文档
    • Go学习导航
    • GoCN社区
    • GO极客兔兔-案例
    • 讯飞星火GPT
    • Hollis博客
    • PostgreSQL德哥
    • 优质博客推荐
    • 半兽人大佬
    • 系列教程
    • PostgreSQL文章
    • 云原生资料库
    • 并发博客大佬
Help?

Please contact us on our email for need any support

Support
    首页   ›   Kotlin   ›   Kotlin Notes   ›   正文
Kotlin Notes

Kotlin-类型进阶—内部类(二十三)

2021-01-26 00:48:06
1149  0 1
参考目录 隐藏
1) 内部类
2) object类
3) 匿名内部类:

阅读完需:约 2 分钟

内部类

在kotlin中类内部的class前面不写修饰符默认就是静态内部类,class前面写 inner修饰符才是java中的普通内部类,与java一样,普通内部类会持有外部类的对象引用。

class Outer {
    //普通内部类 与java一样会持有外部类的引用
    inner class Inner
    //默认静态内部类
    class StaticInner
}
fun main() {
    val inner = Outer().Inner()
    val staticInner = Outer.StaticInner()
}

object类

object类内部的object类默认是静态的 不存在非静态的情况 不能定义成inner

object OuterObject {
    //内部object默认是静态的 不存在非静态的情况 不能定义成inner
    object StaticInnerObject
}

匿名内部类:

其实就是object 省略类名直接实现接口。

fun main() {
    //匿名内部类
    object : Cloneable {

    }
}

匿名内部类 可用继承多个接口,java不行:

fun main() {

    // 类型是混合类型:Cloneable & Runnable 
    val runnableCloneable = object : Cloneable, Runnable {
        override fun run() {

        }
    }
 
}

实现多个接口时,它的类型是多个接口类型的混合类型。

但是java可以用本地类来变相的实现kotlin的实现多个接口

fun main() {
	//本地函数
    fun localFunc(){
        println("Hello")
    }

    //对应Java的local class
    class LocalClass:  Cloneable, Runnable{
        override fun run() {}
    }
}

java,其实就是在静态函数的内部定义一个类:

public class JavaInnerClasses {
    public static void main(String... args) {
        class LocalClass implements Cloneable, Runnable {
            @Override
            public void run() { }
        }
    }
}

这个算是kotlin独有的了,因为java压根就没有顶级函数这个东西,就更别说函数套函数了。

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

1 打赏
Enamiĝu al vi
不要为明天忧虑.因为明天自有明天的忧虑.一天的难处一天当就够了。
543文章 68评论 294点赞 593777浏览

随机文章
Java—Future与FutureTask的区别与联系
5年前
HttpMessageConverter—关于一个字符串到java对象的转化
5年前
Redis—String中BIT相关命令
5年前
ElasticSearch—简介(一)
5年前
Ajax——用户注册
5年前
博客统计
  • 日志总数:543 篇
  • 评论数目:68 条
  • 建站日期:2020-03-06
  • 运行天数:1927 天
  • 标签总数:23 个
  • 最后更新:2024-12-20
Copyright © 2025 网站备案号: 浙ICP备20017730号 身体没有灵魂是死的,信心没有行为也是死的。
主页
页面
  • 归档
  • 摘要
  • 杂图
  • 问题随笔
博主
Enamiĝu al vi
Enamiĝu al vi 管理员
To be, or not to be
543 文章 68 评论 593777 浏览
测试
测试
看板娘
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付