Ebben a cikkben megtudhatja Kotlin mind a 4 láthatóság-módosítóját, és azok működését a különböző esetekben.
A láthatóság módosítói olyan kulcsszavak, amelyek megadják az osztályok, objektumok, interfész, konstruktorok, függvények, tulajdonságok és beállítóik láthatóságát (hozzáférhetőségét). (A getterek láthatóság-módosítóját nem lehet beállítani, mivel azok mindig ugyanazt a láthatóságot veszik fel, mint a tulajdonságé.)
A Kotlin Osztály és tárgyak cikkében röviden public
és többet megtudhat a láthatóság módosítóiról private
. Megismerhet még két láthatóság-módosítót, protected
és internal
(valamint és public
és private
) részletesen.
Láthatóság-módosítók a csomagban
A csomag egy sor kapcsolódó funkciót, tulajdonságokat és osztályokat, objektumokat és interfészeket szervez. Ajánlott irodalom: Kotlin Packages
Módosító | Leírás |
---|---|
nyilvános | nyilatkozatok mindenütt láthatók |
magán | látható a nyilatkozatot tartalmazó fájlban |
belső | látható ugyanazon modul belsejében (Kotlin fájlok együttesen összeállítva) |
védett | csomagoknál nem érhető el (alosztályokhoz használják) |
Megjegyzés: Ha a láthatósági módosító nincs megadva, akkor az public
alapértelmezés szerint.
Vegyünk egy példát:
// fájl neve: hello.kt csomag teszt fun function1 () () // alapértelmezés szerint nyilvános és mindenhol látható private fun function2 () () // látható belül hello.kt belső fun function3 () () // látható a ugyanaz a modul var name = "Foo" // mindenhol látható get () = mező // látható a hello.kt belsejében (ugyanaz, mint a tulajdonában) privát készlet (érték) (// látható belül hello.kt mező = érték) privát osztály class1 () // látható belül hello.kt
Láthatóság-módosítók osztályok és interfészek belsejében
A láthatóság-módosítók a következőképpen működnek az osztályon belül deklarált tagok (függvények, tulajdonságok) esetében:
Módosító | Leírás |
---|---|
nyilvános | minden olyan ügyfél számára látható, aki láthatja a deklaráló osztályt |
magán | csak az osztályon belül látható |
védett | látható az osztályon és annak alosztályain belül |
belső | a modulon belüli összes ügyfél számára látható, amely láthatja a deklaráló osztályt |
Megjegyzés: Ha felülír egy protected
tagot a származtatott osztályban anélkül, hogy megadná a láthatóságát, akkor a láthatósága is az lesz protected
.
Vegyünk egy példát:
open class Base () (var a = 1 // alapértelmezés szerint nyilvános var b = 2 // private to Base class védett nyitott val c = 3 // az Base számára látható és a Derived osztály belső val d = 4 // látható ugyanazon modul belsejében védett fun e () () // a Bázis számára látható és a Derived osztály) osztály Derived: Az Base osztály Base () (// a, c, d és e () láthatóak // b nem látható felülbírálás val c = 9 // c védett) fun main (args: Array) (val base = Base () // base.a és base.d látható // base.b, base.c és base .e () nem láthatóak val származtatottak = Derived () // származékos.c nem látható)
A kivitelező láthatóságának megváltoztatása
Alapértelmezés szerint a konstruktor láthatósága az public
. Megváltoztathatja azonban. Ehhez kifejezetten hozzá kell adnia constructor
kulcsszót.
A konstruktor public
alapértelmezés szerint az alábbi példában található:
osztály teszt (val a: Int) (// kód)
Így módosíthatja a láthatóságát.
osztály Teszt magánépítő (val a: Int) (// kód)
Itt van a kivitelező private
.
Megjegyzés: Kotlinban a helyi függvényeknek, változóknak és osztályoknak nem lehetnek láthatósági módosítóik.