返回

用新语法学习 Kotlin 的单例对象

Android

Kotlin 提供了 object ,用于声明单例对象。本文将介绍三种使用 object 关键字的方式:对象声明、匿名对象和伴生对象。

对象声明

对象声明可用于创建简单的单例对象。

object MySingleton {
    val name = "Kotlin"
    fun sayHello() {
        println("Hello, $name!")
    }
}

要使用该对象,可以直接访问它。

MySingleton.sayHello() // 输出:Hello, Kotlin!

匿名对象

匿名对象可用于创建一个一次性使用的对象。

val myObject = object {
    val name = "Kotlin"
    fun sayHello() {
        println("Hello, $name!")
    }
}

myObject.sayHello() // 输出:Hello, Kotlin!

匿名对象与普通对象的不同之处在于,它不能被命名,并且不能被继承。

伴生对象

伴生对象与普通对象相似,但它与一个类相关联。伴生对象可以访问类的私有成员。

class MyClass {
    private val name = "Kotlin"

    companion object {
        fun sayHello() {
            println("Hello, $name!")
        }
    }
}

MyClass.sayHello() // 输出:Hello, Kotlin!

伴生对象经常被用来存储与类相关的常量或方法。

对象表达式(匿名对象)

对象表达式可以创建匿名对象,而无需声明一个显式类。

val myObject = object {
    val name = "Kotlin"
    fun sayHello() {
        println("Hello, $name!")
    }
}

myObject.sayHello() // 输出:Hello, Kotlin!

对象表达式与匿名对象相似,但它可以包含多个构造函数。

使用 object 的一些重要特性

  • object 可以实现多重继承。
  • object 可以具有私有构造函数,这使得它可以创建一个不可实例化的对象。
  • object 可以在其他 object 中嵌套。
  • object 可以扩展其他类或接口。

总结

object 关键字是一个强大的工具,可用于创建各种类型的对象。它可以用于创建单例对象、匿名对象和伴生对象。它还可以用于实现多重继承、创建不可实例化的对象,并在其他 object 中嵌套。