Ответ
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 инициализируется при первом обращении к классу (лениво).