Sobes.tech
Junior

Ko'rinish modifikatorlari nima va Kotlin'da qanday ishlatiladi?

sobes.tech AI

AIdan javob

Kotlin'da ko'rinish modifikatorlari, e'lonlarning (sinf, interfeys, funksiya, xususiyatlar) dasturning boshqa qismlari uchun kirish imkoniyatini belgilaydi.

Asosiy ko'rinish modifikatorlari:

  • public: Har joyda ko'rinadi. Bu standart modifikator.
  • internal: Faqatgina modul ichida ko'rinadi. Modul, birgalikda kompilyatsiya qilinadigan Kotlin fayllarining to'plamidir.
  • protected: Sinf va uning vorislari ichida ko'rinadi (shu jumladan, voris sinflarda belgilangan a'zolar). Paket tashqarisida ko'rinmaydi.
  • private: Faqat e'lon qilingan fayl ichida ko'rinadi. Sinf a'zolari uchun, faqat shu sinf ichida (va uning companion object, ichki sinflar va ichki sinflarida).

Modifikatorlarning qo'llanilishi:

  • Sinflar, interfeyslar, obyektlar va ularning konstruktorlari uchun.
  • Funksiyalar, xususiyatlar va ularning getter/setterlari uchun, yuqori darajada (sinflardan tashqarida).
  • Sinf a'zolari uchun (ichki sinflar, ichki sinflar, funksiyalar, xususiyatlar).

Misol:

// Fayl: example.kt

private const val PRIVATE_CONSTANT = 1 // Faqat bu faylda ko'rinadi

internal fun internalFunction() { // Faqat modul ichida ko'rinadi
    println("Ichki funksiya chaqirildi")
}

open class BaseClass {
    protected val protectedProperty = "Protected" // Bu sinf va uning vorislari ichida ko'rinadi

    fun publicMethod() { // Har joyda ko'rinadi (public standart)
        println("Jamoat funksiyasi chaqirildi")
    }

    private fun privateMethod() { // Faqat BaseClass ichida ko'rinadi
        println("Maxfiy funksiya chaqirildi")
    }
}

class DerivedClass : BaseClass() {
    fun accessProtected() {
        println("Himoyalangan xususiyatga kirish: $protectedProperty") // protected ga kirish
        // privateMethod() // Xato: private vorisda ko'rinmaydi
    }
}

fun main() {
    val base = BaseClass()
    base.publicMethod()
    // base.protectedProperty // Xato: protected sinf va vorislar tashqarisida ko'rinmaydi

    val derived = DerivedClass()
    derived accessProtected()

    internalFunction()
    // PRIVATE_CONSTANT // Xato: private yuqori darajada faqat e'lon qilingan faylda ko'rinadi
}
Modifikator Kirish imkoniyati Qayerda ishlatiladi
public Har joyda Standart, boshqa modifikator ko'rsatilmagan taqdirda
internal Modul ichida Kutubxona yoki modul ichidagi API uchun
protected Sinf va vorislar ichida (a'zolar uchun) Sinflar merosxo'rligi uchun yaratish
private Fayl ichida (yuqori daraja); sinf ichida (a'zolar uchun) Fayl yoki sinf ichida amalga oshirish tafsilotlarini yashirish uchun