Sobes.tech
Junior — Middle

Obyekt yaradılarkən xüsusiyyətlərin ilkinləşdirilməsi və kod bloklarının icrası hansı ardıcıllıqla baş verir, o cümlədən companion object, init bloku, konstruktor daxilində dəyişənlər və adi dəyişənlər?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də obyekt yaradarkən, başlanğıc ardıcıllığı aşağıdakı kimidir:

  1. companion object-inin başlanması — sinif yüklənərkən bir dəfə baş verir, nümunələr yaradılmadan əvvəl.
  2. Sinifin bədənində elan olunan xüsusiyyətlərin başlanması (konstruktor xaricində elan olunan xüsusiyyətlər daxil olmaqla) — onlar elan olunma ardıcıllığında başlanır.
  3. init bloklarının icrası — onlar sinifdə elan olunduqları ardıcıllıqla, xüsusiyyətlərin başlanmasından dərhal sonra icra olunur.
  4. Konstruktorun elan etdiyi xüsusiyyətlərin başlanması (məsələn, val/var parametrləri) — onlar konstruktor çağırılarkən başlanır.

Nümunə:

class Example(val constructorProp: String) {
    val property1 = println("property1 başlanıb")

    init {
        println("init bloku 1")
    }

    val property2 = println("property2 başlanıb")

    init {
        println("init bloku 2")
    }

    companion object {
        init {
            println("companion object başlanıb")
        }
    }
}

fun main() {
    val example = Example("konstruktor")
}

Nəticə təxminən belə olacaq:

companion object başlanıb
property1 başlanıb
init bloku 1
property2 başlanıb
init bloku 2

Bu şəkildə, companion object bir dəfə sinif yüklənərkən başlanır, sonra obyekt yaradılarkən xüsusiyyətlər başlanır və init blokları elan olunma ardıcıllığında icra olunur, və konstruktor parametrləri konstruktor çağırılarkən başlanır.