Sobes.tech
Junior

Kotlin'da oddiy va kengaytiruvchi metodlar o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Oddiy usul — sinf ichida e’lon qilingan funksiya.

Kengaytiruvchi usul — sinf tashqarisida e’lon qilingan, ammo uning a’zosidek harakat qiladigan funksiya. Kengaytiruvchi usulni e’lon qilishda, unga qo‘llanadigan qabul qiluvchi sinf nomi ko‘rsatiladi.

// Oddiy usul
class MyClass {
    fun myMethod() {
        // usulni amalga oshirish
    }
}

// Kengaytiruvchi usul
fun String.removeVowels(): String {
    // usulni amalga oshirish
}

fun main() {
    val myObject = MyClass()
    myObject.myMethod() // Oddiy usulni chaqirish

    val myString = "Hello"
    val stringWithoutVowels = myString.removeVowels() // Kengaytiruvchi usulni chaqirish
}

Asosiy farqlar:

  • E’lon qilish: Oddiy usullar sinf ichida e’lon qilinadi, kengaytiruvchi usullar esa tashqarida.
  • Sinf a’zolariga kirish: Oddiy usullar private va protected a’zolarga to‘g‘ridan-to‘g‘ri kirish imkoniyatiga ega. Kengaytiruvchi usullar private va protected a’zolarga to‘g‘ridan-to‘g‘ri kirish imkoniyatiga ega emas.
  • this: Oddiy usulda, this usul e’lon qilingan sinfning nusxasiga murojaat qiladi. Kengaytiruvchi usulda, this chaqirilayotgan kengaytma uchun qabul qiluvchi ob’ekt nusxasiga murojaat qiladi.
  • Merosi: Oddiy usullar vorislarda qayta yozilishi mumkin. Kengaytiruvchi usullar meros olmaydi va qayta yozilishi mumkin emas.
  • Amalga oshirish: Oddiy usullar sinfning amalga oshirish qismidir. Kengaytiruvchi usullar alohida amalga oshiriladi va asl sinfni o‘zgartirmaydi.

Kengaytiruvchi usullar mavjud sinflarga funksionallik qo‘shish uchun foydalidir, masalan, tashqi kutubxonalar yoki Kotlinning standart kutubxonasiga.