定义
在 Kotlin 中,object
关键字可以用来声明对象。对象可以分为两种:
- 对象表达式:一种表达式,可以直接赋值给变量或常量。
- 对象声明:一种类似于 Java 中的静态类的声明。
用途
对象可以用于以下场景:
- 表示单例:使用
object
关键字声明的对象只有一个实例,类似于 Java 中的单例模式。 - 表示静态方法:使用
object
关键字声明的对象可以包含静态方法,类似于 Java 中的静态方法。 - 表示枚举:使用
object
关键字声明的对象可以表示枚举,类似于 Java 中的枚举。
和普通类的区别
对象和普通类的区别主要体现在以下几点:
- 实例数量:对象只有一个实例,而普通类可以有多个实例。
- 构造函数:对象可以没有构造函数,而普通类必须至少有一个构造函数。
- 初始化:对象的初始化是在第一次使用时进行的,而普通类的初始化是在创建实例时进行的。
- 继承:对象可以继承其他对象,而普通类可以继承其他类。
使用示例代码
对象表达式
fun main(args: Array<String>) {
val adHoc = object {
var x: Int = 0
var y: Int = 0
}
println(adHoc.x + adHoc.y) // 0
}
对象声明
object AppConfig {
val version = "1.0.0"
}
fun main(args: Array<String>) {
println(AppConfig.version) // 1.0.0
}
单例
object App {
fun doSomething() {
// ...
}
}
fun main(args: Array<String>) {
App.doSomething() // ...
}
静态方法
object Util {
fun doSomething() {
// ...
}
}
fun main(args: Array<String>) {
Util.doSomething() // ...
}
枚举
在 Kotlin 中,使用 object 关键字定义枚举,只需要在 object 关键字后面添加 enum class 关键字即可。
enum class Color {
RED, GREEN, BLUE
}
fun main(args: Array<String>) {
val color = Color.RED
println(color) // RED
}