Sobes.tech
Junior

Görünüş modifikatorları nədir və Kotlin-də necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də görünürlük modifikatorları, bəyanatların (siniflər, interfeyslər, funksiyalar, xüsusiyyətlər) proqramın digər hissələri üçün əlçatanlığını müəyyən edir.

Əsas görünürlük modifikatorları:

  • public: Hər yerdə görünür. Bu, varsayılan modifikatordur.
  • internal: Yalnız bir modul daxilində görünür. Modul, birlikdə tərtib olunan Kotlin fayllarının toplusudur.
  • protected: Sinif və onun törəmələri daxilində görünür (daxilindəki üzvlər daxil olmaqla). Paket xaricində görünmür.
  • private: Yalnız elan olunduğu fayl daxilində görünür. Sinif üzvləri üçün, yalnız bu sinif daxilində (və onun companion object, iç içə və daxili siniflərində).

Modifikatorların tətbiqi:

  • Siniflər, interfeyslər, obyektlər və onların qurucuları üzərində.
  • Funksiyalar, xüsusiyyətlər və onların getter/setter-ləri üzərində, yuxarı səviyyədə (siniflərdən kənarda).
  • Sinif üzvləri üzərində (iç içə siniflər, daxili siniflər, funksiyalar, xüsusiyyətlər).

Nümunə:

// Fayl: example.kt

private const val PRIVATE_CONSTANT = 1 // Yalnız bu faylda görünür

internal fun internalFunction() { // Yalnız modul daxilində görünür
    println("Daxili funksiya çağırıldı")
}

open class BaseClass {
    protected val protectedProperty = "Protected" // Bu sinif və onun törəmələri daxilində görünür

    fun publicMethod() { // Hər yerdə görünür (varsayılan public)
        println("İctimai metod çağırıldı")
    }

    private fun privateMethod() { // Yalnız BaseClass daxilində görünür
        println("Özəl metod çağırıldı")
    }
}

class DerivedClass : BaseClass() {
    fun accessProtected() {
        println("Mühafizə olunmuş xüsusiyyətə giriş: $protectedProperty") // protected-ə giriş
        // privateMethod() // Xəta: private alt sinifdə görünmür
    }
}

fun main() {
    val base = BaseClass()
    base.publicMethod()
    // base.protectedProperty // Xəta: protected sinif və onun törəmələri xaricində görünmür

    val derived = DerivedClass()
    derived.accessProtected()

    internalFunction()
    // PRIVATE_CONSTANT // Xəta: private yuxarı səviyyədə yalnız elan olunduğu faylda görünür
}
Modifikator Əlçatanlıq Harada istifadə etmək olar
public Hər yerdə Varsayılan, başqa modifikator göstərilmədikdə
internal Modul daxilində Kitabxana və ya modul daxilində API üçün
protected Sinif və onun törəmələri daxilində (üzvlər üçün) Sinif irsiylə əlaqəli ierarxiyalar yaratmaq üçün
private Fayl daxilində (yuxarı səviyyədə); sinif daxilində (üzvlər üçün) Detalları gizlətmək üçün fayl və ya sinif daxilində istifadə olunur