English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основы Kotlin

Kotlin поток управления

Функции в Kotlin

Строки в Kotlin

Kotlin面向对象(OOP)

Компаньонские объекты (Companion) в Kotlin

В этой статье вы узнаете, как создавать и использовать сопутствующие объекты в программе Kotlin с помощью примеров.

Прежде чем обсуждать сопутствующие объекты, давайте рассмотрим пример для доступа к членам класса.

class Person {
    fun callMe() = println("I'm called.")
}
fun main(args: Array<String>) {
    val p1 = Person()
    
    // Вызов метода callMe() с помощью объекта p1
    p1.callMe()    
}

Здесь мы создали объект p1 класса Person для вызова метода callMe ()

Однако, в Kotlin, вы также можете вызвать метод callMe () с помощью имени класса (т.е. в данном примере Person) с помощью ключевого слова companion. Для этого вам нужно использовать ключевое слово companion для маркировкиОбъявление объектаОбъявление объекта для создания сопутствующего объекта.

Пример: сопутствующий объект

class Person {
    companion object Test {
        fun callMe() = println("I'm called.")
    }
}
fun main(args: Array<String>) {
    Person.callMe()
}

При выполнении программы выводится:

Я называюсь.

В программе, объект Test объявляется с помощью ключевого слова companion для создания сопутствующего объекта. Таким образом, можно вызвать метод callMe() с использованием следующего названия класса:

Person.callMe()

Имя компаньонского объекта является опциональным и может быть пропущено.

class Person {
    
    //Пропущено имя компаньонского объекта
    companion object {
        fun callMe() = println("I'm called.")
    }
}
fun main(args: Array<String>) {
    Person.callMe()
}

Если вы знакомы с Java, вы, возможно, свяжете компаньонские объекты с статическими методами (хотя их внутренний工作机制 совершенно不一样)

Компаньонские объекты могут доступа к частным членам класса. Таким образом, они могут быть использованы для реализации шаблона фабрики.