Sobes.tech
Junior — Middle

Объект түзүлгөндө, мүлктөрдүн жана код блокторунун башталышы кандай тартипте болот, анын ичинде companion object, init блок, конструктордогу өзгөрмөлөр жана жөнөкөй өзгөрмөлөр?

sobes.tech AI

AIден жооп

Kotlin-де объект түзүүдө, башталгыч тартиби төмөндөгүчө:

  1. companion objectтин башталгыч — бул бир жолу класс жүктөлгөндө, объекттер түзүлмөстөн мурда болот.
  2. Класс денесинде жарыяланган мүлктөрдүн башталгыч — алар жарыялоо тартибинде башталат.
  3. init блокторунун аткарылышы — алар класс ичинде жарыяланган тартипте, мүлктөрдүн башталгандан кийин аткарылат.
  4. Конструктордо жарыяланган мүлктөрдүн (мисалы, val/var параметрлеринин) башталгыч — алар конструктор чакырылганда башталат.

Мисал:

class Example(val constructorProp: String) {
    val property1 = println("property1 башталды")

    init {
        println("init блок 1")
    }

    val property2 = println("property2 башталды")

    init {
        println("init блок 2")
    }

    companion object {
        init {
            println("companion object башталды")
        }
    }
}

fun main() {
    val example = Example("конструктор")
}

Чыгуу так болжошу мүмкүн:

companion object башталды
property1 башталды
init блок 1
property2 башталды
init блок 2

Ушул жол менен, companion object бир жолу класс жүктөлгөндө башталат, андан соң объект түзүлгөндө мүлктөр башталат жана init блоктору жарыялоо тартибинде аткарылат, жана конструктор параметрлери конструктор чакырылганда башталат.