English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Artikel werden Sie die in Kotlin4Es gibt verschiedene Arten von Sichtbarkeitsmodifikatoren und wie sie in verschiedenen Situationen funktionieren.
Sichtbarkeitsmodifikatoren sind Schlüsselwörter, die zur Festlegung der Sichtbarkeit (Zugriffbarkeit) von Klassen, Objekten, Interfaces, Konstruktoren, Funktionen, Eigenschaften und deren Settern verwendet werden. (Die Sichtbarkeit von Gettern kann nicht durch Sichtbarkeitsmodifikatoren festgelegt werden, da sie immer die gleiche Sichtbarkeit wie die Eigenschaft haben.)
InKlassen und Objekte in KotlinIn diesem Artikel haben Sie eine kurze Einführung in die Sichtbarkeitsmodifikatoren public und private erhalten. In diesem Artikel werden Sie die beiden anderen Sichtbarkeitsmodifikatoren protected und internal (sowie public und private) im Detail kennenlernen.
Pakete organisieren eine Gruppe von verwandten Funktionen, Eigenschaften und Klassen, Objekten und Interfaces.
Modifikator | Beschreibung |
---|---|
public | überall sichtbar |
private | im Datei, die die Erklärung enthält, sichtbar |
internal | im selben Modul sichtbar (eine Gruppe zusammengebaute Kotlin-Dateien) |
protected | Nicht für Pakete verwendbar (für Unterklassen) |
Hinweis:Wenn keine Sichtbarkeitsmodifikatoren angegeben sind, dann ist der Standardwert default public.
Lassen Sie uns ein Beispiel nennen:
//Dateiname: hello.kt package test fun function1() {} //Standardmäßig öffentlich und überall sichtbar private fun function2() {} //innerhalb von hello.kt sichtbar internal fun function3() {} //im selben Modul sichtbar var name = "Foo" //überall sichtbar get() = field //innerhalb von hello.kt sichtbar (wie ihre Eigenschaften) private set(value) { //innerhalb von hello.kt sichtbar field = value {} private class class1 {} //innerhalb von hello.kt sichtbar
Nachstehend ist die Funktion der Sichtbarkeitsmodifikatoren für die im Class erklärten Mitglieder (Funktionen, Eigenschaften):
Modifikator | Beschreibung |
---|---|
public | für jeden Client, der die Erklärung der Klasse sehen kann, sichtbar |
private | nur im Class intern sichtbar |
protected | im Class und deren Unterklassen sichtbar |
internal | Für jeden Client, der die Erklärung der Klasse im Modul sehen kann, ist sichtbar |
Hinweis:Wenn Sie in der Ableitungsklasse einen geschützten Mitglied überschreiben und keine Sichtbarkeit angeben, dann ist seine Sichtbarkeit auch geschützt.
Lassen Sie uns ein Beispiel nennen:
open class Base() { var a = 1 //Standardmäßig öffentlich private var b = 2 // Klasse Base ist privat protected open val c = 3 //sichtbar für Base und Derived Klasse internal val d = 4 //im selben Modul sichtbar protected fun e() { } //sichtbar für Base und Derived Klasse {} class Derived: Base() { // a, c, d und e() sind alle Eigenschaften der Klasse Base sichtbar // b ist nicht sichtbar override val c = 9 // c ist geschützt {} fun main(args: Array<String>) { val base = Base() //base.a und base.d sind sichtbar // base.b, base.c und base.e() sind nicht sichtbar val derived = Derived() // derived.c nicht sichtbar {}
Standardmäßig ist die Sichtbarkeit des Konstruktors public. Sie können es jedoch ändern. Dafür müssen Sie den Schlüsselwortkonstruktor ausdrücklich hinzufügen.
Im folgenden Beispiel ist der Konstruktor standardmäßig public:
class Test(val a: Int) { // code {}
Sie können die Sichtbarkeit ändern, indem Sie die folgenden Methoden verwenden.
class Test private constructor(val a: Int) { // code {}
Hier ist der Konstruktor privat.
Hinweis: In Kotlin können lokale Funktionen, Variablen und Klassen keine Sichtbarkeitsmodifikatoren haben.