Junior
Kotlin'da 'internal' kirish modifikatori nima va uni qanday ishlatish mumkin?
sobes.tech AI
AIdan javob
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 (синф ва унинг подклассида) билан, модуллар бўйича кўриш даражасида бўлади.