Kotlin-siktmodifierare

I den här artikeln lär du dig om alla fyra synlighetsmodifierarna i Kotlin och hur de fungerar i olika scenarier.

Synlighetsmodifierare är nyckelord som ställer in synligheten (tillgänglighet) för klasser, objekt, gränssnitt, konstruktörer, funktioner, egenskaper och deras setter. (Du kan inte ställa in visibilitetsmodifierare för getters eftersom de alltid har samma synlighet som egenskapens.)

I artikeln Kotlin Class and Objects lärde du dig om synlighetsmodifierare publicoch privatei korthet. Du kommer att lära dig mer om två synlighetsmodifierare protectedoch internal(samt publicoch private) i detalj.

Siktmodifierare inuti paketet

Ett paket organiserar en uppsättning relaterade funktioner, egenskaper och klasser, objekt och gränssnitt. Rekommenderad läsning: Kotlin-paket

Modifierare Beskrivning
offentlig förklaringar är synliga överallt
privat synlig i filen som innehåller deklarationen
inre synlig i samma modul (en uppsättning Kotlin-filer sammanställda)
skyddade inte tillgängligt för paket (används för underklasser)

Obs! Om synlighetsmodifieraren inte är angiven är den som publicstandard.

Låt oss ta ett exempel:

 // filnamn: hello.kt paket test rolig funktion1 () () // offentlig som standard och synlig överallt privat rolig funktion2 () () // synlig inuti hello.kt intern kul funktion3 () () // synlig inuti samma modul var namn = "Foo" // synlig överallt get () = fält // synligt inuti hello.kt (samma som dess egendom) privat uppsättning (värde) (// synligt inuti hello.kt fält = värde) privat klass class1 () // synlig inuti hello.kt

Synlighetsmodifierare inom klasser och gränssnitt

Så här fungerar synlighetsmodifierare för medlemmar (funktioner, egenskaper) som deklareras i en klass:

Modifierare Beskrivning
offentlig synlig för alla klienter som kan se deklareringsklassen
privat endast synlig i klassen
skyddade synlig i klassen och dess underklasser
inre synlig för alla klienter i modulen som kan se deklareringsklassen

Obs! Om du åsidosätter en protectedmedlem i den härledda klassen utan att ange dess synlighet, blir dess synlighet också protected.

Låt oss ta ett exempel:

 öppen klass Bas () (var a = 1 // offentlig som standard privat var b = 2 // privat till Basklass skyddad öppen val c = 3 // synlig för Basen och Den härledda klassen intern val d = 4 // synlig inuti samma modul skyddad fun e () () // synlig för basen och den härledda klassen) klassen härledd: basen () (// a, c, d och e () av ​​basklassen är synliga // b är inte synlig åsidosätta val c = 9 // c är skyddad) fun main (args: Array) (val base = Base () // base.a och base.d är synliga // base.b, base.c och base .e () är inte synliga val härledda = härledda () // härledda.c är inte synliga) 

Ändra en konstruktörs synlighet

Som standard är en konstruktors synlighet public. Du kan dock ändra det. För det måste du uttryckligen lägga till constructornyckelord.

Konstruktören är som publicstandard i exemplet nedan:

 klass Test (val a: Int) (// kod) 

Så här kan du ändra synligheten.

 klass Testa privat konstruktör (val a: Int) (// kod)

Här är konstruktören private.

Obs! I Kotlin kan lokala funktioner, variabler och klasser inte ha synlighetsmodifierare.

Intressanta artiklar...