💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Kotlin 伴随对象 > 原文: [https://www.programiz.com/kotlin-programming/companion-objects](https://www.programiz.com/kotlin-programming/companion-objects) #### 在本文中,您将借助示例学习在 Kotlin 程序中创建和使用伴随对象。 在介绍伴随对象之前,让我们以访问类成员的示例为例。 ```kt 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 中,您还可以通过使用类名来调用`callMe()`方法,即在这种情况下使用`Person`。 为此,您需要通过使用`companion`关键字标记[对象声明](https://www.programiz.com/kotlin-programming/object-singleton#object-declarations "Kotlin object declaration")来创建伴随对象。 * * * ### 示例:伴随对象 ```kt class Person { companion object Test { fun callMe() = println("I'm called.") } } fun main(args: Array<String>) { Person.callMe() } ``` 运行该程序时,输出为: ```kt I'm called. ``` 在程序中,`test`对象声明用关键字`companion`标记,以创建伴随对象。 因此,可以通过使用以下类的名称来调用`callMe()`方法: ```kt Person.callMe() ``` * * * 伴随对象的名称是可选的,可以省略。 ```kt 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,则可以将伴随对象与静态方法相关联(即使它们在内部的工作方式完全不同)。 伴随对象可以访问该类的私有成员。 因此,它们可用于实现[工厂方法模式](https://stackoverflow.com/questions/69849/factory-pattern-when-to-use-factory-methods "Kotlin Factory Pattern")。