Kotlin láthatóság-módosítók

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 publicalapé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 protectedtagot 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 constructorkulcsszót.

A konstruktor publicalapé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.

érdekes cikkek...