Kotlin-Sichtbarkeitsmodifikatoren

In diesem Artikel erfahren Sie mehr über alle 4 Sichtbarkeitsmodifikatoren in Kotlin und wie sie in verschiedenen Szenarien funktionieren.

Sichtbarkeitsmodifikatoren sind Schlüsselwörter, die die Sichtbarkeit (Zugänglichkeit) von Klassen, Objekten, Schnittstellen, Konstruktoren, Funktionen, Eigenschaften und deren Setzern festlegen. (Sie können den Sichtbarkeitsmodifikator für Getter nicht festlegen, da diese immer die gleiche Sichtbarkeit wie die Eigenschaft haben.)

In Kotlin Klasse und Objekte Artikel haben Sie gelernt , über Sichtbarkeitsmodifizierer publicund privatein Kürze. Sie lernen zwei weitere Sichtbarkeitsmodifikatoren protectedund internal(sowie publicund private) im Detail kennen.

Sichtbarkeitsmodifikatoren im Paket

Ein Paket organisiert eine Reihe verwandter Funktionen, Eigenschaften und Klassen, Objekte und Schnittstellen. Empfohlene Lektüre: Kotlin-Pakete

Modifikator Beschreibung
Öffentlichkeit Erklärungen sind überall sichtbar
Privat sichtbar in der Datei mit der Deklaration
intern sichtbar im selben Modul (eine Reihe von Kotlin-Dateien zusammengestellt)
geschützt nicht verfügbar für Pakete (für Unterklassen verwendet)

Hinweis: Wenn der Sichtbarkeitsmodifikator nicht angegeben ist, ist er publicstandardmäßig aktiviert.

Nehmen wir ein Beispiel:

 // Dateiname: hello.kt Paket test fun function1 () () // standardmäßig öffentlich und überall sichtbar private fun function2 () () // sichtbar in hello.kt interne fun function3 () () // sichtbar in der gleiches Modul var name = "Foo" // überall sichtbar get () = field // sichtbar in hello.kt (wie seine Eigenschaft) private set (value) (// sichtbar in hello.kt field = value) private class class1 () // sichtbar in hello.kt

Sichtbarkeitsmodifikatoren innerhalb von Klassen und Schnittstellen

So funktionieren Sichtbarkeitsmodifikatoren für Mitglieder (Funktionen, Eigenschaften), die in einer Klasse deklariert sind:

Modifikator Beschreibung
Öffentlichkeit sichtbar für jeden Client, der die deklarierende Klasse sehen kann
Privat nur innerhalb der Klasse sichtbar
geschützt sichtbar innerhalb der Klasse und ihrer Unterklassen
intern sichtbar für jeden Client innerhalb des Moduls, der die deklarierende Klasse sehen kann

Hinweis: Wenn Sie ein protectedMitglied in der abgeleiteten Klasse überschreiben, ohne dessen Sichtbarkeit anzugeben, wird auch seine Sichtbarkeit angezeigt protected.

Nehmen wir ein Beispiel:

 offene Klasse Base () (var a = 1 // standardmäßig öffentlich privat var b = 2 // privat für Basisklasse geschützt offener Wert c = 3 // sichtbar für die Basis und die abgeleitete Klasse intern val d = 4 // sichtbar innerhalb desselben Moduls geschützte fun e () () // sichtbar für die Base- und die Derived-Klasse) -Klasse Derived: Base () (// a, c, d und e () der Base-Klasse sind sichtbar // b ist nicht sichtbar überschreiben val c = 9 // c ist geschützt) fun main (args: Array) (val base = Base () // base.a und base.d sind sichtbar // base.b, base.c und base .e () sind nicht sichtbar val abgeleitet = Derived () // abgeleitet.c ist nicht sichtbar) 

Ändern der Sichtbarkeit eines Konstruktors

Standardmäßig ist die Sichtbarkeit eines Konstruktors public. Sie können es jedoch ändern. Dazu müssen Sie das constructorSchlüsselwort explizit hinzufügen .

Der Konstruktor ist publicim folgenden Beispiel standardmäßig:

 Klassentest (Wert a: Int) (// Code) 

So können Sie die Sichtbarkeit ändern.

 Klasse Privaten Konstruktor testen (Wert a: Int) (// Code)

Hier ist der Konstruktor private.

Hinweis: In Kotlin können lokale Funktionen, Variablen und Klassen keine Sichtbarkeitsmodifikatoren haben.

Interessante Beiträge...