Что такое companion object

«Что такое companion object» — вопрос из категории Kotlin, который задают на 31% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Companion object — это объект, объявленный внутри класса с ключевым словом companion. Он позволяет создавать свойства и методы, которые принадлежат классу, а не его экземплярам (аналог static в Java).

Особенности:

  • Доступен без создания экземпляра класса
  • Может реализовывать интерфейсы
  • Может содержать const val для констант

Пример:

class MyClass {
    companion object {
        const val TAG = "MyClass"
        fun create(): MyClass = MyClass()
    }
}

// Использование
val instance = MyClass.create()
println(MyClass.TAG)

Companion object инициализируется при первом обращении к классу (лениво).