Junior — Middle
Объект түзүлгөндө, мүлктөрдүн жана код блокторунун башталышы кандай тартипте болот, анын ичинде companion object, init блок, конструктордогу өзгөрмөлөр жана жөнөкөй өзгөрмөлөр?
sobes.tech AI
AIден жооп
Kotlin-де объект түзүүдө, башталгыч тартиби төмөндөгүчө:
- companion objectтин башталгыч — бул бир жолу класс жүктөлгөндө, объекттер түзүлмөстөн мурда болот.
- Класс денесинде жарыяланган мүлктөрдүн башталгыч — алар жарыялоо тартибинде башталат.
- init блокторунун аткарылышы — алар класс ичинде жарыяланган тартипте, мүлктөрдүн башталгандан кийин аткарылат.
- Конструктордо жарыяланган мүлктөрдүн (мисалы, 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 блоктору жарыялоо тартибинде аткарылат, жана конструктор параметрлери конструктор чакырылганда башталат.