Kotlin 对象

文章目录

对象表达式(匿名对象)

在 Kotlin 中可以使用object {}声明一个匿名的对象,我们无需声明这个对象的类:

kt 复制代码
fun main() {
    val any = object {
        fun greet() = print("Hi")
    }

    any.greet()
}
复制代码
Hi

在匿名对象中,我们 能声明抽象成员。

匿名对象可以继承自类或接口,默认情况下它的类型是Any,继承后它将可以是所继承的所有类型(如果显式声明其类型,它将是声明的类型):

kt 复制代码
open class Greeter {
    fun greet() = print("Hi")
}


interface Runnable {
    fun run()
}


fun main() {
    val any = object: Greeter(), Runnable {
        override fun run() = println("Run")
    }

    any.run()
    any.greet()
}
复制代码
Run
Hi

对象的声明

我们可以使用object,像定义类class那样定义一个对象:

kt 复制代码
fun interface Runnable {
    fun run()
}

        
object Greeter: Runnable {
    fun greet() = print("Hi")
    
    
    override fun run() = println("Run")
}


fun main() {
	Greeter.run()
    Greeter.greet()
}
复制代码
Run
Hi

对象 有构造函数,因为它 可被实例化。

对象中 能声明抽象方法,因为它可被继承。

相关推荐
阿巴斯甜5 小时前
launch 和 async 内部都是串行,为什么还能实现并发?
kotlin
古怪今人7 小时前
Gradle构建工具 Groovy/Kotlin DSL的现代化自动化构建工具
开发语言·kotlin·自动化
赏金术士7 小时前
Kotlin 协程与挂起函数(Coroutines & suspend)入门到实战
android·开发语言·kotlin
赏金术士9 小时前
Room + Flow 完整教程(现代 Android 官方方案)
android·kotlin·room·compose
赏金术士10 小时前
Kotlin 协程面试题大全(Android 高频版)
android·开发语言·kotlin
赏金术士11 小时前
Kotlin 协程底层原理(Continuation)详解
java·开发语言·kotlin
Kapaseker15 小时前
Compose 动画 — 显隐的艺术
android·kotlin
赏金术士18 小时前
Retrofit + Kotlin 协程(Android 实战教程)
android·kotlin·retrofit
高林雨露1 天前
kotlin by 和 = 的区别在于【属性委托】和直【接赋值】的差异
kotlin
高林雨露1 天前
Kotlin 的延迟初始化委托属性 by lazy
kotlin