Junior
Ի՞նչ է Kotlin-ում մուտքի մոդիֆիկատորը 'internal'-ը և ինչպես օգտագործել այն։
sobes.tech AI
Պատասխան AI-ից
Kotlin-ում internal մուտքի կարգավիճակն այն է, որ հայտարարությունը նույն մոդուլում տեսանելի է։ Մոդուլը կարող է լինել 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 (դասի և նրա ենթակլասների ներսում) միջև այն է, որ այն սահմանափակված է մոդուլների մակարդակով։