companion object в Kotlin используется для определения членов класса (свойства и функции), которые являются общими для всех экземпляров этого класса, а также для доступа к ним без создания экземпляра класса. По сути, это аналог статических членов в Java, но реализованный как объект внутри класса.
Основные особенности:
- Единственный экземпляр: Внутри класса может быть только один
companion object.
- Инициализация: Инициализируется при первой загрузке класса.
- Доступ к приватным членам: Имеет доступ к приватным членам внешнего класса.
- Именование: По умолчанию имеет имя
Companion, но может быть явно именован.
- Реализация интерфейсов: Может реализовать интерфейсы.
Пример использования:
kotlin
Преимущества:
- Более семантичное: Позволяет группировать связанные "статические" члены в одном месте.
- Гибкость: Может реализовать интерфейсы, что полезно для паттернов проектирования.
- Доступ к приватным членам: Упрощает реализацию фабричных методов и синглтонов внутри класса.