Junior
Kas ir redzamības modifikatori un kā tos izmantot Kotlin?
sobes.tech AI
Atbilde no AI
Kotlinā redzamības modifikatori nosaka pieejamību deklarācijām (klasēm, interfeisiem, funkcijām, īpašībām) citām programmas daļām.
Galvenie redzamības modifikatori:
public: redzams visur. Noklusējuma modifikators.internal: redzams tikai vienā modulī. Modulis tiek uzskatīts par Kotlin failu kopumu, kas tiek kompilēts kopā.protected: redzams klases un tās mantinieku (ieskaitot locekļus, kas definēti mantiniekos) iekšienē. No ārpuses no pakotnes nav redzams.private: redzams tikai tajā failā, kur tas ir deklarēts. Klases locekļiem tas ir redzams tikai šajā klasē (ieskaitot tās companion object, iekšējās un iekšējās klases).
Modifikatoru lietojums:
- Klases, interfeisi, objekti un to konstruktoros.
- Funkcijās, īpašībās un to getteros/setteros augstākā līmenī (ārpus klases).
- Klases locekļos (iekšējās klases, iekšējās klases, funkcijas, īpašības).
Piemērs:
// Faila: example.kt
private const val PRIVATE_CONSTANT = 1 // Redzams tikai šajā failā
internal fun internalFunction() { // Redzams tikai modulī
println("Iekšējā funkcija")
}
open class BaseClass {
protected val protectedProperty = "Aizsargāts" // Redzams šajā klasē un tās mantiniekos
fun publicMethod() { // Redzams visur (noklusējuma public)
println("Publiskais metodes")
}
private fun privateMethod() { // Redzams tikai šīs klases iekšienē
println("Privāta metode")
}
}
class DerivedClass : BaseClass() {
fun accessProtected() {
println("Piekļuve aizsargātajai īpašībai: $protectedProperty") // Piekļuve protected
// privateMethod() // Kļūda: private nav redzams mantiniekā
}
}
fun main() {
val base = BaseClass()
base.publicMethod()
// base.protectedProperty // Kļūda: protected nav redzams ārpus klases un tās mantiniekiem
val derived = DerivedClass()
derived.accessProtected()
internalFunction()
// PRIVATE_CONSTANT // Kļūda: private ir redzams tikai deklarācijas failā
}
| Modifikators | Pieejamība | Kur izmantot |
|---|---|---|
public |
Visur | Noklusējuma, ja nav norādīts cits modifikators |
internal |
Moduļa iekšienē | API iekš bibliotēkas vai moduļa |
protected |
Klases un tās mantinieku iekšienē (locekļiem) | Klases hierarhiju veidošanai un mantošanai |
private |
Faila iekšienē (augšējā līmenī); klases iekšienē (locekļiem) | Detalju slēpšanai faila vai klases iekšienē |