class Person {
fun callMe() = println("I'm called.")
}
fun main(args: Array<String>) {
val p1 = Person()
// calling callMe() method using object p1
p1.callMe()
}
在这里,我们创建了一个 Person 类的对象 p1 来调用 callMe()
方法。事情通常就是这样工作的。
然而,在 Kotlin 中,您也可以通过类名 Person 来调用 callMe()
方法。为此,您需要通过使用 companion
关键字标记 对象声明 来创建伴生对象。
示例:伴生对象
class Person {
companion object Test {
fun callMe() = println("I'm called.")
}
}
fun main(args: Array<String>) {
Person.callMe()
}
运行程序后,输出将是
I'm called.
在程序中,Test 对象声明被 companion 关键字标记以创建伴生对象。因此,可以通过类名来调用 callMe()
方法,如下所示:
Person.callMe()
伴生对象的名字是可选的,可以省略。
class Person {
// name of the companion object is omitted
companion object {
fun callMe() = println("I'm called.")
}
}
fun main(args: Array<String>) {
Person.callMe()
}
如果您熟悉 Java,您可能会将伴生对象与静态方法进行比较(尽管它们内部的工作方式完全不同)。
伴生对象可以访问类的私有成员。因此,它们可用于实现 工厂方法模式。