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 public
und private
in Kürze. Sie lernen zwei weitere Sichtbarkeitsmodifikatoren protected
und internal
(sowie public
und 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 public
standardmäß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 protected
Mitglied 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 constructor
Schlüsselwort explizit hinzufügen .
Der Konstruktor ist public
im 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.