Junior — Middle
Obyekt yaratilganda, xususiyatlarning boshlanishi va kod bloklarining bajarilishi qanday tartibda bo'ladi, jumladan companion object, init bloki, konstruktordagi o'zgaruvchilar va oddiy o'zgaruvchilar?
sobes.tech AI
AIdan javob
Kotlin'da obyekt yaratishda, boshlanish tartibi quyidagicha:
- companion object ning boshlanishi — bu sinf yuklanganda bir marta bo'lib, instansiyalar yaratilishidan oldin amalga oshiriladi.
- Sinfning tanasida e'lon qilingan xususiyatlarning boshlanishi (konstruktor tashqarisida e'lon qilingan xususiyatlar ham kiradi) — ular e'lon qilish tartibida boshlanadi.
- init bloklarining bajarilishi — ular sinfda e'lon qilingan tartibda, xususiyatlar boshlangandan keyin darhol bajariladi.
- Konstruktor e'lon qilgan xususiyatlarning boshlanishi (masalan, val/var parametrlar) — ular konstruktor chaqirilganda boshlanadi.
Misol:
class Example(val constructorProp: String) {
val property1 = println("property1 boshlang'ich")
init {
println("init bloki 1")
}
val property2 = println("property2 boshlang'ich")
init {
println("init bloki 2")
}
companion object {
init {
println("companion object boshlang'ich")
}
}
}
fun main() {
val example = Example("konstruktor")
}
Chiqish taxminan quyidagicha bo'ladi:
companion object boshlang'ich
property1 boshlang'ich
init bloki 1
property2 boshlang'ich
init bloki 2
Shunday qilib, companion object sinf yuklanganda bir marta boshlanadi, keyin obyekt yaratilganda xususiyatlar boshlanadi va init bloklar e'lon qilish tartibida bajariladi, va konstruktor parametrlari konstruktor chaqirilganda boshlanadi.