Modificatori de vizibilitate Kotlin

În acest articol, veți afla despre toate cele 4 modificatori de vizibilitate din Kotlin și despre modul în care funcționează în diferite scenarii.

Modificatorii de vizibilitate sunt cuvinte cheie care stabilesc vizibilitatea (accesibilitatea) claselor, obiectelor, interfeței, constructorilor, funcțiilor, proprietăților și setătorilor acestora. (Nu puteți seta modificatorul de vizibilitate pentru getters deoarece aceștia au întotdeauna aceeași vizibilitate ca cea a proprietății.)

În articolul Kotlin Class and Objects, ați aflat despre modificatorii de vizibilitate publicși privatepe scurt. Veți afla despre încă doi modificatori de vizibilitate protectedși internal(precum publicși private) în detaliu.

Modificatori de vizibilitate în interiorul pachetului

Un pachet organizează un set de funcții, proprietăți și clase, obiecte și interfețe conexe. Citire recomandată: Pachete Kotlin

Modificator Descriere
public declarațiile sunt vizibile peste tot
privat vizibil în interiorul fișierului care conține declarația
intern vizibil în interiorul aceluiași modul (un set de fișiere Kotlin compilate împreună)
protejat nu este disponibil pentru pachete (folosit pentru subclase)

Notă: dacă modificatorul de vizibilitate nu este specificat, este publicimplicit.

Să luăm un exemplu:

 // nume fișier: hello.kt pachet test fun function 1 () () // public în mod implicit și vizibil peste tot private fun function2 () () // vizibil în interior hello.kt internal fun function3 () () // vizibil în interiorul același modul var nume = "Foo" // vizibil peste tot get () = câmp // vizibil în interiorul hello.kt (la fel ca proprietatea sa) set privat (valoare) (// vizibil în câmpul hello.kt câmp = valoare) clasă privată class1 () // vizibil în interiorul hello.kt

Modificatori de vizibilitate în cadrul claselor și interfețelor

Iată cum funcționează modificatorii de vizibilitate pentru membrii (funcții, proprietăți) declarate în interiorul unei clase:

Modificator Descriere
public vizibil pentru orice client care poate vedea clasa declarantă
privat vizibil numai în interiorul clasei
protejat vizibil în interiorul clasei și al subclaselor sale
intern vizibil pentru orice client din interiorul modulului care poate vedea clasa declarantă

Notă: Dacă suprascrieți un protectedmembru din clasa derivată fără a specifica vizibilitatea acestuia, vizibilitatea acestuia va fi, de asemenea protected.

Să luăm un exemplu:

 open class Base () (var a = 1 // public implicit private var b = 2 // private la Clasa de bază protejată open val c = 3 // vizibilă la bază și clasa derivată intern val d = 4 // vizibilă în interiorul aceluiași modul protejat fun e () () // vizibil pentru baza și clasa derivată) clasa Derivată: baza () (// a, c, d și e () din clasa bază sunt vizibile // b nu este vizibil override val c = 9 // c este protejat) fun main (args: Array) (val base = Base () // base.a și base.d sunt vizibile // base.b, base.c și base .e () nu sunt vizibile val derivat = Derivat () // derivat.c nu este vizibil) 

Schimbarea vizibilității unui constructor

În mod implicit, vizibilitatea unui constructor este public. Cu toate acestea, îl puteți schimba. Pentru aceasta, trebuie să adăugați în mod explicit un constructorcuvânt cheie.

Constructorul este publicimplicit în exemplul de mai jos:

 clasa Test (val a: Int) (// cod) 

Iată cum îi puteți schimba vizibilitatea.

 clasa Test constructor privat (val a: Int) (// cod)

Aici este constructorul private.

Notă: În Kotlin, funcțiile, variabilele și clasele locale nu pot avea modificatori de vizibilitate.

Articole interesante...