Sobes.tech
Junior

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

sobes.tech AI

Ҷавоб аз AI

Модификатори дастрасӣ internal дар Kotlin маънои онро дорад, ки эълон дар дохили ҳамон модул намоён аст. Модул метавонад маҷмӯи файлҳои Kotlin бошад, ки дар якҷоягӣ таҳия карда мешаванд, масалан:

  • Модул Gradle (маҷмӯи коди манбаъ).
  • Модул Maven.
  • Маҷмӯи коди Ant.

Ин барои пинҳон кардани тафсилоти иҷроиш дар дохили модул кӯмак мекунад, онҳоро барои коди дигар модулҳо дастрас намекунад.

internal бо:

  • Синфҳо
  • Интерфейсҳо
  • Объектҳо (object)
  • Функсияҳо
  • Хусусиятҳо
  • Конструкторҳо

Масалан истифода:

// Модул "module1"
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Ин код танҳо дар дохили module1 намоён аст
    }
}

// Ин объект низ танҳо дар дохили 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 (дар дохили синф ва синфҳои зерсохт) дар он аст, ки он дар сатҳи модулҳо маҳдуд мешавад.