Sobes.tech
Junior

Como implementar vários construtores numa única classe em Kotlin?

sobes.tech IA

Resposta da IA

Para criar múltiplos construtores em Kotlin, utiliza-se o construtor primário e, se necessário, um ou vários construtores secundários.

O construtor primário é declarado diretamente na assinatura da classe:

class MyClass(primaryParam1: String, primaryParam2: Int) {
    // Corpo da classe
}

Os construtores secundários são declarados usando a palavra-chave constructor:

class MyClass {
    // Construtor primário (implícito ou explícito)

    constructor(param1: String) {
        // Lógica do construtor secundário 1
    }

    constructor(param1: String, param2: Int) {
        // Lógica do construtor secundário 2
    }
}

Se a classe tiver um construtor primário, cada construtor secundário deve delegar a chamada ao construtor primário, usando a palavra-chave this():

class MyClass(primaryParam: String) {

    constructor(secondaryParam: Int) : this(secondaryParam.toString()) {
        // Lógica do construtor secundário
    }
}

Também é possível ter vários construtores secundários delegando ao construtor primário ou a outros construtores secundários (seguindo a hierarquia de delegação):

class MyClass(primaryParam: String) {

    constructor(param1: String, param2: Int) : this(param1) {
        // Lógica do construtor secundário 1
    }

    constructor(param1: String, param2: Int, param3: Boolean) : this(param1, param2) {
        // Lógica do construtor secundário 2
    }
}

Pontos importantes:

  • O corpo do construtor primário é executado antes do corpo dos construtores secundários.
  • As propriedades declaradas na assinatura do construtor primário podem ser acessíveis no corpo dos construtores secundários.
  • Em Kotlin, recomenda-se usar o construtor primário e, sempre que possível, evitar construtores secundários, preferindo argumentos nomeados ou métodos de fábrica.