Sobes.tech
Junior

Kas ir piekļuves modifikators 'internal' Kotlin un kā to izmantot?

sobes.tech AI

Atbilde no AI

Kotlin piekļuves modifikators internal nozīmē, ka deklarācija ir redzama tikai tajā pašā modulī. Modulis var būt Kotlin failu kopums, kas ir kompilēts kopā, piemēram:

  • Gradle modulis (avota kopums).
  • Maven modulis.
  • Ant avota kopums.

Tas ir noderīgi, slēpjot īstenošanas detaļas modulī, padarot tās nepieejamas citu moduļu kodam.

internal var izmantot ar:

  • Klase
  • Saziņas interfeisi
  • Objekti (object)
  • Funkcijas
  • Īpašības
  • Konstruktorus

Piemērs:

// "module1" modulis
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Šis kods ir redzams tikai module1 iekšienē
    }
}

// Šis objekts ir arī redzams tikai module1 iekšienē
internal object InternalObject {
    internal val internalProperty = "Internal value"
}
// "module1" modulis
package com.example.module1

fun someFunctionInModule1() {
    val internalCls = InternalClass() // Pieejams
    internalCls.internalFunction()     // Pieejams
    println(InternalObject.internalProperty) // Pieejams
}
// "module2" modulis
package com.example.module2

import com.example.module1.InternalClass // Kompilācijas kļūda
import com.example.module1.InternalObject // Kompilācijas kļūda

fun someFunctionInModule2() {
    // Nav iespējams izveidot InternalClass instanci vai piekļūt InternalObject
    // val internalCls = InternalClass() // Nepieejams
    // println(InternalObject.internalProperty) // Nepieejams
}

Galvenā atšķirība no public (redzams visur), private (redzams tikai klasē) un protected (redzams tikai klasē un tās apakšklasēs) ir tieši redzamības līmenis modulī.