В этой статье вы научитесь создавать и использовать сопутствующие объекты в вашей программе Kotlin с помощью примеров.
Прежде чем переходить к объектам-компаньонам, давайте рассмотрим пример доступа к членам класса.
class Person ( fun callMe() = println("I'm called.") ) fun main(args: Array) ( val p1 = Person() // calling callMe() method using object p1 p1.callMe() )
Здесь мы создали объект p1 класса Person для вызова callMe()
метода. Вот как все обычно работает.
Однако в Kotlin вы также можете вызвать callMe()
метод, используя имя класса, то есть в данном случае Person. Для этого вам необходимо создать сопутствующий объект, пометив объявление объекта companion
ключевым словом.
Пример: сопутствующие объекты
class Person ( companion object Test ( fun callMe() = println("I'm called.") ) ) fun main(args: Array) ( Person.callMe() )
Когда вы запустите программу, вывод будет:
Меня зовут.
В программе объявление тестового объекта помечается ключевым словом companion для создания сопутствующего объекта. Следовательно, можно вызвать callMe()
метод, используя имя класса как:
Person.callMe ()
Имя сопутствующего объекта необязательно и может быть опущено.
class Person ( // name of the companion object is omitted companion object ( fun callMe() = println("I'm called.") ) ) fun main(args: Array) ( Person.callMe() )
Если вы знакомы с Java, вы можете связать объекты-компаньоны со статическими методами (даже если их внутренняя работа полностью отличается).
Сопутствующие объекты могут иметь доступ к закрытым членам класса. Следовательно, их можно использовать для реализации шаблонов фабричных методов.