Junior
Mis on nähtavuse modifikaatorid ja kuidas neid Kotlinis kasutada?
sobes.tech AI
Vastus AI-lt
Kotlinis redzamības modifikatori nosaka pieejamību deklarācijām (klasēm, interfeisiem, funkcijām, īpašībām) citās programmas daļās.
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ē |