Šiame straipsnyje sužinosite apie visus 4 matomumo modifikatorius Kotline ir kaip jie veikia pagal skirtingus scenarijus.
Matomumo modifikatoriai yra raktiniai žodžiai, nustatantys klasių, objektų, sąsajos, konstruktorių, funkcijų, savybių ir jų nustatiklių matomumą (prieinamumą). (Jūs negalite nustatyti matuoklių matomumo modifikatorių, nes jie visada mato tą patį matomumą kaip ir nuosavybė.)
Straipsnyje „Kotlin Class and Objects“ sužinojote apie matomumo modifikatorius public
ir private
trumpai. Sužinosite apie dar du matomumo modifikatorius protected
ir internal
(taip pat public
ir ir private
) išsamiai.
Matomumo modifikatoriai pakuotės viduje
Paketas organizuoja susijusių funkcijų, ypatybių ir klasių, objektų ir sąsajų rinkinį. Rekomenduojamas skaitymas: „ Kotlin Packages“
Modifikatorius | apibūdinimas |
---|---|
visuomenės | deklaracijos matomos visur |
privatus | matomas byloje, kurioje yra deklaracija |
vidinis | matomas to paties modulio viduje (kartu sudarytas „Kotlin“ failų rinkinys) |
saugomi | negalima pakuotėms (naudojamos poklasiams) |
Pastaba: jei matomumo modifikatorius nenurodytas, jis yra public
numatytasis.
Paimkime pavyzdį:
// failo pavadinimas: hello.kt paketo bandymo funkcija fun1 () () // pagal nutylėjimą vieša ir matoma visur privataus fun funkcija2 () () // matoma viduje hello.kt vidinė linksma funkcija3 () () // matoma viduje tas pats modulis var name = "Foo" // matomas visur get () = laukas // matomas hello.kt viduje (tas pats kaip ir jo nuosavybė) privatus rinkinys (reikšmė) (// matomas hello.kt lauke = value) privačios klasės klasė1 () // matomas viduje labas.kt
Matomumo modifikatoriai klasių ir sąsajų viduje
Štai kaip matomumo modifikatoriai veikia nariams (funkcijoms, savybėms), deklaruotiems klasėje:
Modifikatorius | apibūdinimas |
---|---|
visuomenės | matomas kiekvienam klientui, kuris gali matyti deklaruojančią klasę |
privatus | matomas tik klasės viduje |
saugomi | matomas klasės ir jos poklasių viduje |
vidinis | matomas kiekvienam modulio klientui, kuris gali matyti deklaruojančią klasę |
Pastaba: jei nepaisysite protected
išvestinės klasės nario, nenurodydami jo matomumo, jo matomumas taip pat bus protected
.
Paimkime pavyzdį:
„open class Base“ () (var a = 1 // pagal nutylėjimą privatus var b = 2 // privatus iki „Base“ klasės apsaugotas atviras val c = 3 // matomas bazei ir išvestinės klasės vidinis val d = 4 // matomas to paties modulio viduje saugoma fun e () () // matoma bazei ir išvestinei klasei) klasė Išvestinė: matoma bazės klasės bazė () (// a, c, d ir e () // b nėra matomas nepaisyti val c = 9 // c yra apsaugotas) linksmas pagrindinis (args: masyvas) (val bazė = bazė () // matoma bazė.a ir bazė.d matoma // bazė.b, baz.c ir bazė .e () nėra matomi išvestiniai = Išvestinis () // išvestinis.c nematomas)
Konstruktoriaus matomumo keitimas
Pagal numatytuosius nustatymus konstruktoriaus matomumas yra public
. Tačiau galite tai pakeisti. Tam reikia aiškiai pridėti constructor
raktinį žodį.
Pagal public
numatytuosius nustatymus konstruktorius yra toliau pateiktame pavyzdyje:
klasės testas (val a: Int) (// kodas)
Štai kaip galite pakeisti jo matomumą.
klasės bandymo privatus konstruktorius (val a: Int) (// kodas)
Čia yra konstruktorius private
.
Pastaba: „Kotlin“ vietinėse funkcijose, kintamuosiuose ir klasėse negali būti matomumo modifikatorių.