English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Sichtbarkeitsmodifikatoren in Kotlin

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.

Sichtbarkeitsmodifikatoren im Paket

Pakete organisieren eine Gruppe von verwandten Funktionen, Eigenschaften und Klassen, Objekten und Interfaces.

ModifikatorBeschreibung
publicüberall sichtbar
privateim Datei, die die Erklärung enthält, sichtbar
internalim selben Modul sichtbar (eine Gruppe zusammengebaute Kotlin-Dateien)
protectedNicht 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

Sichtbarkeitsmodifikatoren in Class und Interface

Nachstehend ist die Funktion der Sichtbarkeitsmodifikatoren für die im Class erklärten Mitglieder (Funktionen, Eigenschaften):

ModifikatorBeschreibung
publicfür jeden Client, der die Erklärung der Klasse sehen kann, sichtbar
privatenur im Class intern sichtbar
protectedim Class und deren Unterklassen sichtbar
internalFü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
{}

Ändern der Sichtbarkeit des Konstruktors

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.