Primärkonstruktor und Property-Parameter
Deklarieren Sie Klassen mit Primärkonstruktoren und direkt eingebetteten Property-Deklarationen.
Primärkonstruktor und Property-Parameter 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.
Der primäre Konstruktor
Eine Kotlin-Klasse deklariert ihren primären Konstruktor direkt nach dem Klassennamen in Klammern. Es gibt keinen Methodenkörper, sondern nur eine Parameterliste.
Einfachste Klasse
Der primäre Konstruktor ist ohne Modifizierer hinter dem Klassennamen nicht sichtbar.
class Greeter(val name: String) {
fun greet() = "Hello, $name!"
}
fun main() {
println(Greeter("Ada").greet())
}Parameter als Properties
Stellen Sie einem Konstruktorparameter val oder var voran, um ihn in einem Schritt zu einer Property der Klasse zu machen.
class Person(val name: String, var age: Int)
fun main() {
val p = Person("Bob", 30)
println("${p.name} is ${p.age}")
p.age = 31
println("Now ${p.age}")
}Parameter ohne val/var
Konstruktorparameter ohne val/var sind auf den Konstruktor beschränkt. Sie können in init-Blöcken oder Property-Initialisierern verwendet, aber später nicht mehr abgerufen werden.
class Logger(prefix: String) {
val msg = "$prefix: ready"
}
fun main() {
val l = Logger("[INFO]")
println(l.msg)
// l.prefix // ERROR — not a property
}Standardwerte für Parameter
Geben Sie Standardwerte für Konstruktorparameter an, um überflüssigen Overload-Code zu vermeiden.
class User(
val name: String,
val age: Int = 0,
val email: String = ""
)
fun main() {
println(User("Ana").age) // 0
println(User("Ben", 25).email) // ""
println(User("Cal", 30, "c@x.io").email)
}Benannte Argumente
Überspringen Sie die Positionsreihenfolge und benennen Sie die Parameter am Aufrufort – besonders nützlich bei Standardwerten.
class HttpClient(
val baseUrl: String,
val timeoutMs: Int = 5000,
val retries: Int = 3
)
fun main() {
val c = HttpClient(
baseUrl = "https://api.example.com",
retries = 5
)
println("retries=${c.retries} timeout=${c.timeoutMs}")
}Sichtbarkeit des Konstruktors
Verwenden Sie private constructor, um die Instanziierung von außen zu verhindern – häufig in Kombination mit Factory-Methoden.
class Singleton private constructor() {
companion object {
val instance = Singleton()
}
}
fun main() {
val s = Singleton.instance
println(s)
}Sekundäre Konstruktoren
Fügen Sie mit dem Schlüsselwort constructor zusätzliche Konstruktoren hinzu. Diese müssen mit this(...) an den primären Konstruktor delegieren.
class Point(val x: Int, val y: Int) {
constructor(value: Int) : this(value, value)
}
fun main() {
println("${Point(3).x}, ${Point(3).y}") // 3, 3
}Konstruktor mit Sichtbarkeit
Sie können für jeden Konstruktor eine eigene Sichtbarkeit festlegen – nützlich für Bibliotheken.
class Lib internal constructor(val key: String) {
companion object {
fun create(key: String) = Lib(key)
}
}
fun main() {
println(Lib.create("abc").key)
}Zusammenfassung zum init-Block
Code, der während der Erstellung ausgeführt werden soll, gehört in einen init { }-Block. Mehrere init-Blöcke werden in der Reihenfolge ihres Auftretens im Quelltext ausgeführt.
class Validator(val value: String) {
init { require(value.isNotBlank()) { "value cannot be blank" } }
}
fun main() {
println(Validator("ok").value)
// Validator("") // throws IllegalArgumentException
}Properties und Logik kombinieren
Property-Deklarationen, sekundäre Konstruktoren und init-Blöcke lassen sich zu einer flexiblen Initialisierungspipeline kombinieren.
class Account(
val owner: String,
initialBalance: Double = 0.0
) {
var balance: Double = initialBalance
private set
init {
require(initialBalance >= 0) { "balance must be non-negative" }
}
fun deposit(amount: Double) { balance += amount }
}
fun main() {
val a = Account("Alice", 100.0)
a.deposit(50.0)
println("${a.owner}: ${a.balance}") // Alice: 150.0
}Kurze Überprüfung
Was bewirkt das Schlüsselwort val, wenn es in einem Parameter des primären Konstruktors verwendet wird?
Zusammenfassung
Der primäre Konstruktor befindet sich im Klassenkopf. Verwenden Sie val/var für Property-Parameter; einfache Parameter sind auf den Konstruktor beschränkt. Fügen Sie Standardwerte hinzu, um Overloads zu reduzieren, und führen Sie Einrichtungslogik in init-Blöcken aus. Sekundäre Konstruktoren delegieren über this(...).
Häufig gestellte Fragen
Ist die Lektion „Primärkonstruktor und Property-Parameter“ kostenlos?
Ja — der vollständige Text von „Primärkonstruktor und Property-Parameter“ 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 „Primärkonstruktor und Property-Parameter“?
Deklarieren Sie Klassen mit Primärkonstruktoren und direkt eingebetteten Property-Deklarationen. 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 „Primärkonstruktor und Property-Parameter“?
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
- Primärkonstruktor und Property-Parameter
- init-Blöcke und Initialisierungsreihenfolge
- Benutzerdefinierte Getter und Setter mit field
- lateinit und verzögerte Initialisierung