9
I’m starting to learn Kotlin and I’d like to know the difference between init and constructor, or set directly in the example class:
class House(var cor: String, var vagaGaragem: Int)
						9
I’m starting to learn Kotlin and I’d like to know the difference between init and constructor, or set directly in the example class:
class House(var cor: String, var vagaGaragem: Int)
						5
First of all, what you call "set straight in class" is a builder.
A class in Kotlin can have a primary constructor and "secondary constructors".
Primary constructors are like this of your example code: it is followed by the class name and can have parameters. These cannot have a code block, so the only way to write some startup code on them is by using the block init.
In addition, all boot blocks defined in the class will be executed for all builders in the order they are created.
Take an example:
fun main() {    
    var p = Person("Jeferson", 23)
    println("**************")
    var p2 = Person("Joaquim")
}
class Person(val name: String, val age: Int) { // <<= Construtor primário
    constructor(name: String) : this(name, 0) {  // <<= Construtor secundário
        println("Construtor 2")
    }
    init {
        println("Init 1")
    }
    init {
        println("Bloco Init 2")
    }
}
See working on Kotlin Playground
This will print on the screen
Init 1 Bloco Init 2 ************** Init 1 Bloco Init 2 Construtor 2
What do you mean, primary constructors cannot have code? I would like to understand, there is no code in the constructor itself used as an example?
@user140828 What code? There’s nothing there.
println is not considered code? I think I got it wrong, primary constructor would be the class statement itself?
@user140828 I put a comment to identify each constructor
Browser other questions tagged kotlin
You are not signed in. Login or sign up in order to post.
The answer clarified your doubt?
– Jéf Bueno