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

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

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

相关推荐
YF02116 小时前
深入剖析 Kotlin 的高效之道与核心实战
android·kotlin·app
逐光老顽童7 小时前
Kotlin 委托机制完全指南:从语法糖到架构实战
kotlin
逐光老顽童10 小时前
Kotlin协程详解与现代Android开发实践
kotlin
plainGeekDev11 小时前
Kotlin 常见坑速查:object/lateinit/return 那些容易踩的坑
kotlin
plainGeekDev11 小时前
Android 高级岗 Kotlin 面试题:这些答不上来,基本告别大厂了
kotlin
plainGeekDev12 小时前
Kotlin 泛型与扩展:out/in 搞不懂?扩展函数到底扩展了啥?
kotlin
plainGeekDev12 小时前
Kotlin 特殊类型篇:密封类比枚举好使在哪?Nothing 到底是个啥?
kotlin
沅霖14 小时前
Android Studio Java工程开发环境,怎么切换到Kotlin开发环境
android·kotlin·android studio
Kapaseker14 小时前
Kotlin SharedFlow 的三个参数到底有啥用
android·kotlin
阿巴斯甜15 小时前
by 和by lazy 懒加载
kotlin