Sobes.tech
Junior

Kotlin-ში 'internal' წვდომის მოდიფიკატორი რა არის და როგორ გამოიყენება?

sobes.tech AI

პასუხი AI-სგან

Kotlin-ში internal შესვლის მოდიფიკატორი ნიშნავს, რომ განცხადება შესაბამის მოდულში ჩანს. მოდული შეიძლება იყოს 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 (კლასის და მისი ქვესახეების შიგნით) შორის ის არის, რომ ეს განსაზღვრავს მოდულების დონეზე ხილვადობის დონეს.