Sobes.tech
Junior

Kotlin tilida sinflardagi boshlovchilar haqida gapirib bering.

sobes.tech AI

AIdan javob

Kotlinda, sinflar birinchi va bir yoki bir nechta ikkilamchi konstruktorlarga ega bo'lishi mumkin. Initsializatorlar init kod bloklari bo'lib, ular e'lon qilingan joydan keyin, birinchi konstruktor (agar mavjud bo'lsa) yoki ikkilamchi konstruktordan keyin, agar birinchi mavjud bo'lmasa, bajariladi.

Birinchi konstruktor

U to'g'ridan-to'g'ri sinf sarlavhasida e'lon qilinadi. U xususiyatlarni boshlash uchun ishlatiladigan parametrlarni o'z ichiga olishi mumkin.

class User(name: String, age: Int) {
    init {
        // Bu blok sinf nusxasi yaratilganda bajariladi
        println("Foydalanuvchi yaratildi: $name, $age")
    }
}

Ikkinchi konstruktorlar

constructor kalit so'zi bilan e'lon qilinadi va har doim sinfning boshqa konstruktoriga delegatsiya qilishlari kerak, ya'ni birinchi (bu this orqali) yoki boshqa ikkilamchi.

class User {
    init {
        // Bu blok birinchi bo'lib bajariladi, agar birinchi konstruktor mavjud bo'lsa
    }

    constructor(name: String) : this() {
        // Ikkinchi konstruktor 1
        println("Foydalanuvchi nom bilan yaratildi: $name")
    }

    constructor(name: String, age: Int) : this(name) {
        // Ikkinchi konstruktor 2, birinchi ikkilamchiga chaqiradi
        println("Foydalanuvchi nom va yosh bilan yaratildi: $name, $age")
    }
}

Ishlash tartibi

  1. Birinchi konstruktor kodlari (agar parametrlar bo'lsa, ular ishlatiladi).
  2. init bloklari ketma-ket.
  3. Chaqirilgan ikkilamchi konstruktor kodi (delegatsiyadan keyin).

Ishlash tartibining misoli:

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

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

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

fun main() {
    Example(10)
}

Chiqish:

Init blok 1
Init blok 2
Ikkinchi konstruktor 10

Hatto ikkilamchi konstruktor chaqirilsa ham, init bloklari har doim uning tanasidan oldin bajariladi. Bu, ob'ektning asosiy boshlanishi tugallanganligini ta'minlaydi, shundan so'ng ikkilamchi konstruktorning maxsus kodi bajariladi.

Initsializatorlar, har qanday sinf nusxasini yaratishda bajarilishi kerak bo'lgan mantiqni bajarish uchun ajralmasdir; ular, masalan, kirish ma'lumotlarini tekshirish yoki ob'ekt holatini sozlash uchun ishlatiladi.