Что будет, если внутри класса добавить companion object

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

Ответ

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

Пример:

class MyClass {
    companion object {
        const val TAG = "MyClass"
        fun printTag() = println(TAG)
    }
}

// Использование:
MyClass.printTag() // Выведет: MyClass

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

  • Доступен через имя класса (как статический член)
  • Может реализовывать интерфейсы
  • Поддерживает extension-функции
  • Инициализируется при первом обращении (лениво)