Kotlin学习 - object和companion object使用

这篇具有很好参考价值的文章主要介绍了Kotlin学习 - object和companion object使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

object使用

1、实现单例

在文章Kotlin学习 - 数据类与单例类中,如果想声明一个单例类使用的就是object关键字,定义一个全局单例类,代码如下;

object Singleton {
    fun test(){
        println("Singleton test!!")
    }
}

fun main() {
    Singleton.test()
}

还可以在类内部实现一个单例

class Car {
    val price: Int = 120

    object Engine {
        //访问不到price
        //price = 200
        fun run() {
            println("engine start run")
        }
    }
}

fun main() {
    Car.Engine.run()
}

类内部实现的单例不能访问类外的变量。

2、实现对象表达式(匿名内部类)

作为匿名内部类的时候可以访问外部类的成员变量。并且和Java匿名内部类不同,可以同时实现多个接口。

interface IMedia {
    fun broadcast()
}

interface IGuid {
    fun guid()
}

fun main() {
    var name = "Tom"
    var car = object : Car(), IMedia, IGuid {
        override fun drive() {
        	super.drive()
            name = "Lucy"
            println("drive car")
        }

        override fun broadcast() {            
        }

        override fun guid() {
        }
    }
    
    car.drive()
    println(name)
}
//运行结果
drive car
Lucy

companion object使用

被companion object定义的类也叫作伴生对象companion objec的定义完全属于类的本身,所以companion object肯定是不能脱离类而定义在全局之中。

object 类似,可以给 companion object 命名,也可以不给名字,这个时候它会有个默认的名字: Companion,而且一个类中只能有一个伴生对象。

open class ConfigMap {
    companion object {
    	private const val PATH = "F://a.txt"
        fun load() = File(PATH).readBytes()
    }
}

fun main() {
    ConfigMap.load()
}

Kotlin中没有static,可以用companion object将类内静态变量和函数封装起来使用。文章来源地址https://www.toymoban.com/news/detail-533988.html

到了这里,关于Kotlin学习 - object和companion object使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android开发知识学习——Kotlin进阶

    申明前缀有construct修饰 如果有一个主构造函数,每个次构造函数需要委托给主构造函数,可以直接委托或者通过别的构造函数 主构造函数:是类头的一部分,跟在类名后面(可带参数),没有任何注解和可见性修饰符。如: 主构造函数中没有任何代码,初始化代码放在关键

    2024年02月06日
    浏览(64)
  • 使用Kotlin优化Java开发

    Kotlin是一种静态类型的编程语言,运行于Java虚拟机(JVM)、Android和WebAssembly。由JetBrains开发,其设计的主要目的是支持函数式编程和面向对象编程特性。Kotlin可以与Java互相调用,使得它对于现有Java生态系统中的开发人员来说非常有吸引力。与Java相比,它提供了更多的功能和语

    2024年02月09日
    浏览(43)
  • 【第四阶段】kotlin语言的定义类和field关键字学习

    1.普通成员变量背后隐士代码 为什么在kotlin中是private 可以直接调用,隐式代码如下 val只有get方法 不能set 2.field

    2024年02月07日
    浏览(45)
  • Kotlin 协程基础使用学习

    原文: Kotlin 协程基础使用学习-Stars-One的杂货小窝 本篇阅读可能需要以下知识,否则可能阅读会有些困难 客户端开发基础(Android开发或JavaFx开发) Java多线程基础 kotlin基础 本文尽量以使用为主,以代码为辅讲解,不提及过深协程底层代码逻辑,仅做一个基础入门来快速上手学习(断断

    2024年03月18日
    浏览(60)
  • Kotlin 1.9 新特性预览:data object (数据单例)

    data object (数据单例) 是 Kotlin 1.9 中预定引入的新特性 ,但其实从 1.7.20 开始就可以预览了。启动预览需要在 gradle 中升级 KotlinCompileVersion: 接下来让我们看看它有哪些特点。 data object 相对于普通 object ,在调用 toString() 的时候,前者的可读性更好,输出类名,不再携带 HashC

    2024年02月12日
    浏览(38)
  • Kotlin DSL教程:使用DSL构建HTML | Android开发

    本文详细介绍了如何在Android开发中使用Kotlin DSL(领域特定语言)构建HTML。包括定义接口,实现父类和子元素,以及实际使用示例。

    2024年02月07日
    浏览(49)
  • Kotlin & Compose Multiplatform 跨平台(Android端、桌面端)开发实践之使用 SQLDelight 将数据储存至数据库

    取标题的时候我还在想,我应该写 Compose 跨平台呢还是写 Kotlin 跨平台。 毕竟对于我的整体项目而言,确实是 Compose 跨平台开发,但是对于我这篇文章要说的东西,那其实也涉及不到多少 Compose 相关的内容,更多的应该是 Kotlin Multiplatform 相关的内容。 二者取舍不下,干脆都

    2024年02月15日
    浏览(46)
  • Kotlin 开发环境配置指南

    步骤 1:获取最新版 Kotlin 编译器 要配置 Kotlin 开发环境,首先需要从 JetBrains 官方 GitHub 仓库下载最新的 Kotlin 编译器。访问以下链接以获取最新版本的编译器: 在该页面中,找到适合您操作系统的 Kotlin 编译器发行版(例如 kotlin-compiler-xxxx.zip ),其中 xxxx 表示当前的版本号

    2024年01月25日
    浏览(42)
  • 【第三阶段】kotlin语言的内置函数takeif

    执行结果

    2024年02月11日
    浏览(42)
  • 【第三阶段】kotlin语言中的==与===比较操作

    \\\"==\\\" 内容的比较 相当于Java的equals() \\\"===\\\" 引用的比较 1.== 执行结果 2.=== 执行结果

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包