Junior
Was sind Sichtbarkeitsmodifikatoren und wie verwendet man sie in Kotlin?
sobes.tech KI
Antwort von AI
Sichtbarkeitsmodifikatoren in Kotlin bestimmen die Zugänglichkeit von Deklarationen (Klassen, Schnittstellen, Funktionen, Eigenschaften) für andere Teile des Programms.
Die wichtigsten Sichtbarkeitsmodifikatoren:
public: Überall sichtbar. Ist der Standardmodifikator.internal: Nur innerhalb eines Moduls sichtbar. Ein Modul ist eine Gruppe von Kotlin-Dateien, die zusammen kompiliert werden.protected: Innerhalb der Klasse und ihrer Unterklassen sichtbar (einschließlich Mitglieder, die in abgeleiteten Klassen definiert sind). Außerhalb des Pakets nicht sichtbar.private: Nur innerhalb der Datei sichtbar, in der es deklariert ist. Für Klassenmitglieder nur innerhalb dieser Klasse sichtbar (und ihres companion objects, verschachtelten und inneren Klassen).
Anwendung der Modifikatoren:
- An Klassen, Schnittstellen, Objekte und deren Konstruktoren.
- An Funktionen, Eigenschaften und deren Getter/Setter auf oberster Ebene (außerhalb von Klassen).
- An Mitglieder der Klasse (verschachtelte Klassen, innere Klassen, Funktionen, Eigenschaften).
Beispiel:
// Datei: example.kt
private const val PRIVATE_CONSTANT = 1 // Nur in dieser Datei sichtbar
internal fun internalFunction() { // Nur innerhalb des Moduls sichtbar
println("Interne Funktion aufgerufen")
}
open class BaseClass {
protected val protectedProperty = "Protected" // Sichtbar in dieser Klasse und ihren Unterklassen
fun publicMethod() { // Überall sichtbar (public standardmäßig)
println("Öffentliche Methode aufgerufen")
}
private fun privateMethod() { // Nur innerhalb von BaseClass sichtbar
println("Private Methode aufgerufen")
}
}
class DerivedClass : BaseClass() {
fun accessProtected() {
println("Zugriff auf geschützte Eigenschaft: $protectedProperty") // Zugriff auf protected
// privateMethod() // Fehler: private ist in der Unterklasse nicht sichtbar
}
}
fun main() {
val base = BaseClass()
base.publicMethod()
// base.protectedProperty // Fehler: protected ist außerhalb der Klasse und ihrer Unterklassen nicht sichtbar
val derived = DerivedClass()
derived.accessProtected()
internalFunction()
// PRIVATE_CONSTANT // Fehler: private auf oberster Ebene ist nur in der Deklarationsdatei sichtbar
}
| Modifikator | Zugänglichkeit | Wo verwenden |
|---|---|---|
public |
Überall | Standard, wenn kein anderer Modifikator angegeben wird |
internal |
Innerhalb des Moduls | Für API innerhalb einer Bibliothek oder eines Moduls |
protected |
Innerhalb der Klasse und ihrer Unterklassen (für Mitglieder) | Für die Erstellung von Klassenhierarchien mit Vererbung |
private |
Innerhalb der Datei (auf oberster Ebene); innerhalb der Klasse (für Mitglieder) | Zum Verbergen von Implementierungsdetails innerhalb der Datei oder Klasse |