Sobes.tech
Junior

Модулҳои намоишӣ чистанд ва чӣ гуна онҳоро дар Kotlin истифода бурдан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Модификаторҳои намоёнӣ дар Kotlin муайян мекунанд, ки чӣ гуна эълонҳо (синфҳо, интерфейсҳо, функсияҳо, хосиятҳо) барои қисмҳои дигари барнома дастрас мебошанд.

Модификаторҳои асосии намоёнӣ:

  • public: Дар ҳама ҷо намоён. Модификатори пешфарз.
  • internal: Танҳо дар дохили як модул намоён. Модул ба маҷмӯи файлҳои Kotlin, ки якҷоя компилют мешаванд, ишора мекунад.
  • protected: Дар дохили синф ва синфҳои зерсинф (аз ҷумла аъзои, ки дар синфҳои наследӣ муайян шудаанд). Аз берун аз пакет намоён нест.
  • private: Танҳо дар дохили файли, ки дар он эълон шудааст, намоён. Барои аъзои синф, танҳо дар дохили ҳамин синф (аз ҷумла object-и ҳамроҳ, синфҳои дарунӣ ва дохилӣ) намоён аст.

Истифодаи модификаторҳо:

  • Дар синфҳо, интерфейсҳо, объектҳо ва конструкторҳои онҳо.
  • Дар функсияҳо, хосиятҳо ва геттер/сеттери онҳо дар сатҳи боло (аз синфҳо берун).
  • Дар аъзои синф (синфҳои дарунӣ, синфҳои дохилӣ, функсияҳо, хосиятҳо).

Масалан:

// Файл: example.kt

private const val PRIVATE_CONSTANT = 1 // Танҳо дар ин файл намоён

internal fun internalFunction() { // Танҳо дар дохили модул намоён
    println("Функсияи дохилӣ")
}

open class BaseClass {
    protected val protectedProperty = "Ҳимояшуда" // Дар ин синф ва синфҳои зерсинф намоён

    fun publicMethod() { // Дар ҳама ҷо намоён (пешфарз public)
        println("Функсияи умумӣ")
    }

    private fun privateMethod() { // Танҳо дар дохили BaseClass
        println("Функсияи хусусӣ")
    }
}

class DerivedClass : BaseClass() {
    fun accessProtected() {
        println("Дастрасӣ ба хосияти ҳимояшуда: $protectedProperty") // Дастрасӣ ба protected
        // privateMethod() // Гурӯҳ: private дар синфҳои зерсинф намоён нест
    }
}

fun main() {
    val base = BaseClass()
    base.publicMethod()
    // base.protectedProperty // Гурӯҳ: protected дар берун аз синф ва синфҳои зерсинф намоён нест

    val derived = DerivedClass()
    derived.accessProtected()

    internalFunction()
    // PRIVATE_CONSTANT // Гурӯҳ: private дар сатҳи боло танҳо дар файли эълон намоён аст
}
Модификатор Дастрасӣ Дар куҷо истифода бурда мешавад
public Дар ҳама ҷо Пешфарз, вақте ки дигар модификатор нишон дода нашудааст
internal Дар дохили модул Барои API дар дохили китобхона ё модул
protected Дар дохили синф ва синфҳои зерсинф (барои аъзои синф) Барои сохтани ҳиерархияҳои синфҳо бо меросгирӣ
private Дар дохили файл (барои сатҳи боло); дар дохили синф (барои аъзои) Барои пинҳон кардани тафсилоти иҷро дар дохили файл ё синф