Avatar ·

Quelle est la différence entre un bloc init et un constructeur en Kotlin ?

Bonjour ! Je viens de commencer à apprendre Kotlin après Java et je suis confronté à une confusion. En Java, nous avons des constructeurs où nous initialisons les champs. En Kotlin, je vois qu'on peut utiliser à la fois des constructeurs (primaire et secondaires) et des blocs `init` spéciaux. Mais je ne comprends pas complètement pourquoi les blocs `init` sont nécessaires si tout peut être fait dans le constructeur ? Par exemple, j'ai ce code : ```kotlin class Person(name: String) { val name: String init { this.name = name.uppercase() } } ``` Pourquoi ne pas simplement écrire `init` dans le corps du constructeur, comme en Java ? Ou encore cet exemple : ```kotlin class Rectangle(val width: Int, val height: Int) { val area: Int init { area = width * height } } ``` Peut-on le faire directement dans le constructeur primaire ? Quelle est la différence fondamentale entre `init` et le constructeur ? Quand utiliser quoi ? Et que se passe-t-il si la classe a plusieurs blocs `init` et des constructeurs secondaires — dans quel ordre s'exécutent-ils ?