Verschachtelte Klassen
Klassen innerhalb von Klassen
Verschachtelte Klassen ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Klassen innerhalb von Klassen
Kotlin ermöglicht es Ihnen, eine Klasse innerhalb einer anderen Klasse zu deklarieren. Standardmäßig ist eine solche Klasse verschachtelt und enthält keine Referenz auf die äußere Instanz.
class Outer {
class Nested {
fun hello() = "Hi from Nested"
}
}
fun main() {
println(Outer.Nested().hello())
}Eine verschachtelte Instanz erstellen
Da eine verschachtelte Klasse unabhängig ist, erstellen Sie sie über den Namen der äußeren Klasse und ohne äußere Instanz: Outer.Nested().
class Computer {
class Cpu {
val cores = 8
}
}
fun main() {
val cpu = Computer.Cpu()
println(cpu.cores)
}Kein Zugriff auf Member der äußeren Klasse
Eine verschachtelte Klasse kann nicht auf die Instanzmember der äußeren Klasse zugreifen, weil sie keine Referenz auf die äußere Klasse besitzt. Sie verhält sich wie eine Top-Level-Klasse, die unter einem Namen eingeordnet ist.
class Bank {
val name = "ACME"
class Branch {
fun describe() = "A branch"
}
}
fun main() {
println(Bank.Branch().describe())
}Warum überhaupt verschachteln?
Eine Verschachtelung drückt eine logische Gruppierung aus: Der innere Typ gehört konzeptionell zum äußeren Typ. Das verbessert die Organisation und die Namensräume.
class Http {
class Request(val url: String)
}
fun main() {
val r = Http.Request("/home")
println(r.url)
}Verschachtelte Klasse mit Properties
Verschachtelte Klassen sind ganz normale Klassen: Sie können Konstruktoren, Properties und Methoden haben.
class Garage {
class Car(val model: String) {
fun honk() = "$model: beep"
}
}
fun main() {
println(Garage.Car("Tesla").honk())
}Auf Companion- oder statikähnliche Member zugreifen
Auf verschachtelte Klassen kann von überall aus über den Namen der äußeren Klasse verwiesen werden, ähnlich wie auf eine statische verschachtelte Klasse in Java.
class Config {
class Defaults {
val timeout = 30
}
}
fun main() {
println(Config.Defaults().timeout)
}Mehrere verschachtelte Klassen
Eine äußere Klasse kann mehrere verschachtelte Klassen enthalten, um zusammengehörige Typen zu gruppieren.
class Shapes {
class Circle(val r: Int)
class Square(val side: Int)
}
fun main() {
println(Shapes.Circle(5).r)
println(Shapes.Square(4).side)
}Verschachtelung in einer verschachtelten Klasse
Sie können mehrere Verschachtelungsebenen verwenden, allerdings kann eine tiefe Verschachtelung die Lesbarkeit beeinträchtigen.
class A {
class B {
class C {
val value = 42
}
}
}
fun main() {
println(A.B.C().value)
}Verschachtelt oder Top-Level
Funktional entspricht eine verschachtelte Klasse einer Top-Level-Klasse; der einzige Unterschied ist ihr qualifizierter Name. Verwenden Sie Verschachtelung, wenn die Beziehung die Verständlichkeit verbessert.
class Order {
class Item(val price: Int)
}
fun main() {
val total = Order.Item(10).price + Order.Item(5).price
println(total)
}Eine praktische Gruppierung
Wenn Sie den Ergebnistyp eines Builders unter seinem Besitzer gruppieren, ist die Struktur intuitiv lesbar.
class Parser {
class Result(val ok: Boolean, val message: String)
fun parse(text: String) = Result(text.isNotEmpty(), "parsed")
}
fun main() {
val res = Parser().parse("data")
println("${res.ok} ${res.message}")
}Eine wichtige Regel zum Merken
Das Schlüsselwort, durch das eine Klasse eine Referenz auf die äußere Klasse erhält, ist inner. Ohne dieses Schlüsselwort ist eine verschachtelte Klasse statikähnlich und unabhängig.
class Box {
class Lid
}
fun main() {
println(Box.Lid() != null)
}Kurzer Test
Testen Sie Ihr Verständnis von verschachtelten Klassen.
Zusammenfassung
Sie haben verschachtelte Klassen kennengelernt:
- Sie werden innerhalb einer anderen Klasse deklariert; standardmäßig handelt es sich um eine
class(verschachtelt). - Sie enthalten keine Referenz auf die äußere Instanz und können nicht auf deren Member zugreifen.
- Sie werden über den Namen der äußeren Klasse erstellt:
Outer.Nested(). - Sie eignen sich hervorragend für logische Gruppierung und Namespaces.
class Outer {
class Nested { val x = 1 }
}
fun main() {
println(Outer.Nested().x)
}Häufig gestellte Fragen
Ist die Lektion „Verschachtelte Klassen“ kostenlos?
Ja — der vollständige Text von „Verschachtelte Klassen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Verschachtelte Klassen“?
Klassen innerhalb von Klassen Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Verschachtelte Klassen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Verschachtelte Klassen
- Innere Klassen
- Anonyme Objekte
- Lokale Klassen