Was ist der Unterschied zwischen einem init-Block und einem Konstruktor in Kotlin?
Hallo! Ich habe gerade angefangen, Kotlin nach Java zu lernen und bin auf Verwirrung gestoßen. In Java haben wir Konstruktoren, in denen wir Felder initialisieren. In Kotlin sehe ich, dass man sowohl Konstruktoren (primäre und sekundäre) als auch spezielle `init`-Blöcke verwenden kann. Aber ich verstehe nicht ganz, wozu `init`-Blöcke gut sind, wenn man alles im Konstruktor erledigen kann?
Zum Beispiel habe ich diesen Code:
```kotlin
class Person(name: String) {
val name: String
init {
this.name = name.uppercase()
}
}
```
Warum nicht einfach `init` im Konstruktor-Rumpf schreiben, wie in Java? Oder noch ein Beispiel:
```kotlin
class Rectangle(val width: Int, val height: Int) {
val area: Int
init {
area = width * height
}
}
```
Kann man das nicht direkt im primären Konstruktor machen? Was ist der