📅  最后修改于: 2023-12-03 15:32:30.422000             🧑  作者: Mango
在 Kotlin 中,每个类都可以有一个附加的“伴生对象(Companion Object)”。这个伴生对象通过“Companion”关键字来定义,它可以访问其所属类中的所有私有成员,甚至可以定义静态方法,而不用创建该类的实例。
我们可以通过以下方式定义一个伴生对象:
class MyClass {
companion object {
//...
}
}
注意,伴生对象的名称并不是 Companion,而是可以自定义的。如果不指定名称,将使用默认名称 Companion。另外,每个类最多只能有一个伴生对象。
我们可以通过类名直接访问伴生对象:
MyClass.Companion // 访问伴生对象
或者可以省略 Companion,直接使用类名访问:
MyClass // 访问伴生对象
与 Java 不同,Kotlin 的伴生对象是非常重要的一部分。它们可以用来:
伴生对象可以让类中的工厂方法更加容易识别。以下是一个例子:
interface Animal { }
class Dog : Animal {
companion object Factory {
fun create(): Dog = Dog()
}
}
Dog.create() // 使用工厂方法创建 Dog 对象
伴生对象可以访问其所属类的私有成员,我们可以将其视为一个拥有所有私有成员访问权限的对象。以下是一个例子:
class MyClass {
private val myPrivateVar = 1
companion object {
fun accessPrivateVar(obj: MyClass) = obj.myPrivateVar
}
}
val obj = MyClass()
MyClass.accessPrivateVar(obj) // 访问 MyClass 中的私有变量
以上就是 Kotlin 中的伴生对象的介绍。其实它们非常类似于 Java 中的静态方法。但它们在 Kotlin 中的功能更加强大,可以访问类的私有成员,是 Kotlin 中比较重要的一部分。