Kotlin synlighetsmodifikatorer

I denne artikkelen vil du lære om alle de 4 synlighetsendringene i Kotlin og hvordan de fungerer i forskjellige scenarier.

Synlighetsmodifikatorer er nøkkelord som angir synlighet (tilgjengelighet) for klasser, objekter, grensesnitt, konstruktører, funksjoner, egenskaper og deres setter. (Du kan ikke angi siktemodifikator for getters, ettersom de alltid har samme synlighet som for eiendommen.)

I Kotlin Class and Objects-artikkelen lærte du om synlighetsendringer publicog privatei korte trekk. Du vil lære om to andre synlighetsmodifikatorer protectedog internal(samt publicog private) i detalj.

Siktmodifikatorer inne i pakken

En pakke organiserer et sett med relaterte funksjoner, egenskaper og klasser, objekter og grensesnitt. Anbefalt lesing: Kotlin-pakker

Modifikator Beskrivelse
offentlig erklæringer er synlige overalt
privat synlig i filen som inneholder erklæringen
innvendig synlig i samme modul (et sett med Kotlin-filer samlet sammen)
beskyttet ikke tilgjengelig for pakker (brukes til underklasser)

Merk: Hvis synlighetsmodifikator ikke er spesifisert, er det som publicstandard.

La oss ta et eksempel:

 // filnavn: hello.kt pakke test morsom funksjon1 () () // offentlig som standard og synlig overalt privat moro funksjon2 () () // synlig inne hello.kt intern moro funksjon3 () () // synlig inne i samme modul var navn = "Foo" // synlig overalt get () = felt // synlig inne hello.kt (samme som eiendommen) privat sett (verdi) (// synlig inne i hello.kt felt = verdi) privat klasse klasse1 () // synlig inne hello.kt

Synlighetsmodifikatorer i klasser og grensesnitt

Slik fungerer synlighetsmodifikatorer for medlemmer (funksjoner, egenskaper) deklarert i en klasse:

Modifikator Beskrivelse
offentlig synlig for enhver klient som kan se den erklærende klassen
privat kun synlig i klassen
beskyttet synlig inne i klassen og dens underklasser
innvendig synlig for enhver klient i modulen som kan se deklarerende klasse

Merk: Hvis du overstyrer et protectedmedlem i den avledede klassen uten å spesifisere synligheten, vil det også være synlighet protected.

La oss ta et eksempel:

 åpen klasse Base () (var a = 1 // offentlig som standard privat var b = 2 // privat til baseklasse beskyttet åpen val c = 3 // synlig for basen og Den avledede klassen intern val d = 4 // synlig inne i den samme modulen beskyttet moro e () () // synlig for basen og den avledede klassen) klassen avledet: Base () (// a, c, d og e () av ​​baseklassen er synlig // b er ikke synlig overstyr val c = 9 // c er beskyttet) morsom main (args: Array) (val base = Base () // base.a og base.d er synlig // base.b, base.c og base .e () er ikke synlig val avledet = Avledet () // derivert.c er ikke synlig) 

Endring av en konstruktørs synlighet

Som standard er synligheten til en konstruktør public. Du kan imidlertid endre det. For det må du eksplisitt legge til constructornøkkelord.

Konstruktøren er publicsom standard i eksemplet nedenfor:

 klasse Test (val a: Int) (// kode) 

Slik kan du endre synligheten.

 klasse Test privat konstruktør (val a: Int) (// kode)

Her er konstruktøren private.

Merk: I Kotlin kan lokale funksjoner, variabler og klasser ikke ha synlighetsmodifikatorer.

Interessante artikler...