Kotlin 伴生对象

在讨论伴生对象之前,我们先举一个访问类成员的例子。

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,您可能会将伴生对象与静态方法进行比较(尽管它们内部的工作方式完全不同)。

伴生对象可以访问类的私有成员。因此,它们可用于实现 工厂方法模式

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战