用例子解释Kotlin的伴侣对象

76 阅读1分钟

当你在Kotlin中定义一个class ,你需要在访问该类的方法和属性之前创建一个该类的实例。

例如,假设你有一个Car 类,其细节如下:

class Car {
var category = "Sedan"
fun start() = println("The car is starting..")
}

Car 要访问上面的categorystart() ,你需要创建一个该类的实例:

val car = Car()
car.start() // The car is starting..
car.category = "Minivan"

Kotlincompanion object 是一种编写class 的方法和属性的方式,无需创建该类的实例就可以调用。

你放在companion object 里面的方法和属性也被称为class 的静态成员。

下面是你如何在Kotlin中创建一个companion object

class Car {
 companion object {
 var category = "Sedan"
 fun start() = println("The car is starting..")
 }
}

一个companion object 可以被命名为如下所示:

class Car {
 companion object MyObject{
 var category = "Sedan"
fun start() = println("The car is starting..")
}
}

但是由于每个Kotlinclass 只能有一个companion object ,所以你不需要给它起名字。

现在你可以直接调用定义在companion object 中的方法和属性,如下图所示:

class Car {
companion object {
var category = "Sedan"
fun start() = println("The car is starting..")
}
}
Car.category = "Minivan"
Car.start()

这就是Kotlin的companion object 的全部内容。

你仍然可以在companion object 之外的同一个class 中写一个普通的方法,如下图所示:

class Car {
companion object {
var category = "Sedan"
fun start() = println("The car is starting..")
}
fun activateGps() = println("Turn on GPS")
}

要访问activateGps() 方法,你需要创建一个Car 类的实例。