Z
ZHANK
面向对象

object 关键字

object 单例、companion object 伴生对象、匿名对象

object 关键字

object 在 Kotlin 中有三种用法——单例、伴生对象、匿名对象。

学完本章你将: 掌握 object 单例、companion object、匿名对象。


object 单例

kotlin
object AppConfig {
    val version = "1.0"
    fun printVersion() = println(version)
}

AppConfig.printVersion()    // 直接使用——不需要实例化

companion object 伴生对象

kotlin
class User(val name: String) {
    companion object {
        const val DEFAULT_NAME = "匿名"

        fun create(name: String) = User(name)
        fun createDefault() = User(DEFAULT_NAME)
    }
}

val u1 = User.create("小明")
val u2 = User.createDefault()

// 类似 Java 的 static——但更强大
println(User.DEFAULT_NAME)

匿名对象

kotlin
// 创建匿名实现
val listener = object : Runnable {
    override fun run() {
        println("执行中")
    }
}

// 无接口的匿名对象
val point = object {
    var x = 0
    var y = 0
}

工厂模式

kotlin
class User private constructor(val name: String) {
    companion object Factory {
        fun create(name: String) = User(name)
    }
}

val user = User.create("小明")
// val user = User("小明")  // ❌ 构造函数 private