Sobes.tech
Junior

Kotlin dilində siniflərdə başlanğıcçılar haqqında danış.

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də sinflər birincil və bir və ya daha çox ikincil konstruktorlara sahib ola bilər. İnitilayzerlər init kod bloklarıdır və onlar elan edildikdən sonra, ya birincil konstruktor (əgər mövcuddursa), ya da ikincil konstruktor çağırıldıqdan sonra, ardıcıllıqla icra olunur.

Birincil konstruktor

Birbaşa sinif başlığında elan edilir. Xüsusiyyətləri başlatmaq üçün istifadə olunan parametrləri ehtiva edə bilər.

class User(name: String, age: Int) {
    init {
        // Bu blok sinif nümunəsi yaradılarkən icra olunur
        println("İstifadəçi yaradıldı: $name, $age")
    }
}

İkincil konstruktorlar

constructor açar sözü ilə elan edilir və həmişə eyni sinfin başqa bir konstruktoruna və ya birincilə (bu this vasitəsilə) və ya başqa ikincilə delegasiya etməlidir.

class User {
    init {
        // Bu blok ilk olaraq icra olunur, əgər birincil konstruktor mövcuddursa
    }

    constructor(name: String) : this() {
        // İkincil konstruktor 1
        println("İstifadəçi ad ilə yaradıldı: $name")
    }

    constructor(name: String, age: Int) : this(name) {
        // İkincil konstruktor 2, ilk ikinciliyə çağırır
        println("İstifadəçi ad və yaş ilə yaradıldı: $name, $age")
    }
}

İcra ardıcıllığı

  1. Birincil konstruktorun kodu (əgər parametrlər varsa, onlar istifadə olunur).
  2. init blokları ardıcıllıqla.
  3. Çağırılan ikincil konstruktorun kodu (delegasiyadan sonra).

İcra ardıcıllığının nümunəsi:

class Example {
    init {
        println("Init bloku 1")
    }

    constructor(i: Int) {
        println("İkincil konstruktor $i")
    }

    init {
        println("Init bloku 2")
    }
}

fun main() {
    Example(10)
}

Çıxış:

Init bloku 1
Init bloku 2
İkincil konstruktor 10

Hətta ikincil konstruktor çağırılırsa belə, init blokları həmişə onun gövdəsindən əvvəl icra olunur. Bu, obyektin əsas ilkinləşdirilməsinin tamamlandığını təmin edir və ikincil konstruktorun xüsusi kodu icra edilmədən əvvəl baş verir.

İnitializatorlar, hər hansı bir sinf nümunəsinin yaradılması zamanı icra olunması lazım olan məntiqi yerinə yetirmək üçün vacibdir; məsələn, giriş məlumatlarının yoxlanması və ya obyektin vəziyyətinin konfiqurasiyası üçün istifadə olunur.