Sobes.tech
Junior

Τι είναι ο τροποποιητής πρόσβασης 'internal' στο Kotlin και πώς τον χρησιμοποιούμε;

sobes.tech AI

Απάντηση από AI

Կողմնորոշիչ internal Kotlin-ում նշանակում է, որ հայտարարությունը տեսանելի է նույն մոդուլում։ Մոդուլը կարող է լինել Kotlin ֆայլերի հավաքածու, որը համատեղ կոմպիլացվում է, օրինակ՝

  • Gradle մոդուլ (կոդի հավաքածու)
  • Maven մոդուլ
  • Ant կոդի հավաքածու

Սա օգտակար է մոդուլի ներսում իրականացման մանրամասները թաքցնելու համար, դարձնելով դրանք անհասանելի այլ մոդուլների կոդի համար։

internal կարելի է օգտագործել հետևյալ տարրերի հետ՝

  • Սինֆակտներ
  • Ինտերֆեյսներ
  • Obektներ (object)
  • Ֆունկցիաներ
  • Գույքներ
  • Կառուցապատողներ

Օգտագործման օրինակ՝

// "module1" մոդուլ
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Այս կոդը միայն `module1` ներսում է տեսանելի
    }
}

// Այս obektը նույնպես միայն `module1` ներսում է տեսանելի
internal object InternalObject {
    internal val internalProperty = "Ինտերնալ արժեք"
}
// "module1" մոդուլ
package com.example.module1

fun someFunctionInModule1() {
    val internalCls = InternalClass() // հասանելի
    internalCls.internalFunction()     // հասանելի
    println(InternalObject.internalProperty) // հասանելի
}
// "module2" մոդուլ
package com.example.module2

import com.example.module1.InternalClass // Կոմպիլյացիայի սխալ
import com.example.module1.InternalObject // Կոմպիլյացիայի սխալ

fun someFunctionInModule2() {
    // Չի կարելի ստեղծել InternalClass օրինակ կամ դիմել InternalObject-ին
    // val internalCls = InternalClass() // Անհասանելի
    // println(InternalObject.internalProperty) // Անհասանելի
}

Հիմնական տարբերությունը public (տեսանելի ամենուր), private (միայն դասի ներսում) և protected (դասի և նրա ենթակլասների ներսում) միջև այն է, որ այն սահմանափակված է մոդուլների մակարդակով։