Объект внутри класса (inner object) привязан к экземпляру внешнего класса и существует только в его жизненном цикле. Компаньон объекта (companion object) существует как синглтон, не привязанный к экземпляру класса, и может быть доступен напрямую через имя класса.
Основные различия:
inner object привязан к экземпляру внешнего класса, companion object не привязан.inner object можно получить доступ только через экземпляр внешнего класса, к companion object - напрямую через имя класса.inner object может иметь состояние, специфичное для экземпляра, companion object - общее для всего класса.inner object часто используется для реализации шаблона State или для группировки связанных объектов внутри экземпляра. companion object используется для фабричных методов, констант или статических членов класса.Пример:
kotlin