Sobes.tech
Middle

Kotlin'da qanday obyektlar mavjud va ular qanday kompilyatsiya qilinadi?

sobes.tech AI

AIdan javob

Kotlin'da obyektlar singletonlar yaratish uchun ishlatiladi. Ular object kalit so'zi bilan e'lon qilinadi.

object Singleton {
    fun doSomething() {
        println("Singletondan Salom!")
    }
}

Kompilyatsiya qilishda, Kotlin obyekt Singleton Java sinfiga aylantiriladi, u maxfiy statik INSTANCE maydoniga va statik boshlang'ich blokka ega.

// Yaratilgan Java kodining misoli
public final class Singleton {
   public static final Singleton INSTANCE; // Yagona nusxa uchun statik maydon

   public final void doSomething() { // Ob'ekt metodi
      System.out.println("Singletondan Salom!");
   }

   private Singleton() { // Maxfiy konstruktor, boshqa nusxalarni yaratishni oldini oladi
   }

   static { // Statik boshlang'ich blok
      INSTANCE = new Singleton(); // Yagona nusxani yaratish
   }
}

Kotlin'da Singleton.doSomething() obyekt metodini chaqirish, Java'da Singleton.INSTANCE.doSomething() statik metod chaqiruviga aylantiriladi.

Oddiy obyektlardan tashqari, Kotlinda quyidagilar ham mavjud:

  • Hamkasb obyekt (companion object): Klass ichida statik a'zolarni belgilash uchun ishlatiladi. Ular klass nomi orqali kiriladi. Har bir klassda faqat bitta hamkasb obyekt bo'lishi mumkin.

    class MyClass {
        companion object {
            const val MY_CONSTANT = "some value"
            fun create(): MyClass {
                return MyClass()
            }
        }
    }
    

    Java'da statik a'zolar sifatida kompilyatsiya qilinadi.

  • Obyekt ifodasi (object expression): Java'dagi nomerik sinflarga o'xshash, nomerik obyektlar yaratish uchun ishlatiladi.

    val listener = object : MyInterface {
        override fun onClick() {
            println("Bosildi!")
        }
    }
    

    Java'da nomerik sinfga kompilyatsiya qilinadi.