Что такое companion object

companion object - это специальный объект в Kotlin, который позволяет создавать статические члены (методы, свойства) внутри класса. В отличие от обычных объектов, companion object связан с классом, в котором он объявлен, и может быть использован для организации статических членов и функций, которые принадлежат классу, но не привязаны к конкретному экземпляру этого класса.

Основные особенности companion object:

  1. Статические члены: Внутри companion object можно определять статические методы, свойства и другие члены класса, которые могут быть вызваны без необходимости создавать экземпляр класса.

  2. Привязка к классу: companion object привязан к классу, в котором он определен, и может обращаться к его членам без явного указания имени класса.

  3. Использование имени класса: Для доступа к членам companion object извне класса, его можно вызвать по имени класса, например: MyClass.Companion.myMethod() или просто MyClass.myMethod().

  4. Использование без имени класса: Члены companion object могут быть использованы внутри самого класса без явного указания имени класса.