Companion object

Companion object


В главное меню

Эта фишка позволяет создать объект без его объявления. Т.е. сразу

class Outer {
    companion object {
        fun hello() = println("hello from companion object")
    }
}

fun main() {
    Outer.hello()
}

Не может быть конструктора, но может быть интерфейс. Его автоматичеаски реализует и класс.

Объект, который относится к классу в котором был создан.

Он всегда существует и его не обаятельно создавать самостоятельно. Все чалены не могут обращаться к классу Calc

class Calc {
самостоятельно. Все челены не могут образаться к классу Calc
    companion object {
//когда создаём переменную как val - она не public, а private и для нее содается создается public getter
        private const val PI = 3.14
        fun square(num: Int) = num*num
        fun lengthOfCircle(radius: Float) = 2 * PI * radius
    }
}

Это нужно чтобы не создавать отдельный объект.

В main мы бы создали объект

val calc = Calc()
calc.square(4)


С Companion object можем сразу вызывать без миную создание объекта

Calc.square(4)


-Это аналог статики в джаве.

-Можно использовать для реализации фабрик по конструированию объектов

-Может реализовывать интерфейсы

-Может иметь имя. Может быть несколько штук.


Report Page