Qual é a diferença entre um bloco init e um construtor em Kotlin?
Olá! Acabei de começar a aprender Kotlin depois de Java e me deparei com uma confusão. Em Java, temos construtores onde inicializamos os campos. Em Kotlin, vejo que podemos usar tanto construtores (primário e secundários) quanto blocos `init` especiais. Mas não entendo completamente por que os blocos `init` são necessários, se tudo pode ser feito no construtor?
Por exemplo, tenho este código:
```kotlin
class Person(name: String) {
val name: String
init {
this.name = name.uppercase()
}
}
```
Por que não simplesmente escrever `init` no corpo do construtor, como em Java? Ou este outro exemplo:
```kotlin
class Rectangle(val width: Int, val height: Int) {
val area: Int
init {
area = width * height
}
}
```
Isso pode ser feito diretamente no construtor primário? Qual é a diferença fundamental entre `init` e o construtor? Quando usar cada um? E o que acontece se a classe tiver vários blocos `init` e construtores secundários — em que ordem eles são executados?
No answers yet.
Faça login para deixar uma resposta