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 |