0Pricing
Kotlin Academy · Aula

Construtor primário e parâmetros de propriedades

Declare classes com construtores primários e declarações de propriedades na própria classe.

Construtor primário e parâmetros de propriedades é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

O construtor primário

Uma classe Kotlin declara seu construtor primário logo depois do nome da classe, entre parênteses. Não há corpo de método — apenas uma lista de parâmetros.

A classe mais simples

O construtor primário sem modificadores fica implícito depois do nome da classe.

class Greeter(val name: String) {
    fun greet() = "Hello, $name!"
}
fun main() {
    println(Greeter("Ada").greet())
}

Parâmetros de propriedades

Prefixe um parâmetro do construtor com val ou var para transformá-lo em uma propriedade da classe em uma única etapa.

class Person(val name: String, var age: Int)
fun main() {
    val p = Person("Bob", 30)
    println("${p.name} is ${p.age}")
    p.age = 31
    println("Now ${p.age}")
}

Parâmetros sem val/var

Parâmetros do construtor sem val/var são locais ao construtor — podem ser usados em blocos init ou em inicializadores de propriedades, mas não podem ser acessados posteriormente.

class Logger(prefix: String) {
    val msg = "$prefix: ready"
}
fun main() {
    val l = Logger("[INFO]")
    println(l.msg)
    // l.prefix // ERROR — not a property
}

Valores padrão de parâmetros

Forneça valores padrão para os parâmetros do construtor para evitar código repetitivo de sobrecargas.

class User(
    val name: String,
    val age: Int = 0,
    val email: String = ""
)
fun main() {
    println(User("Ana").age)               // 0
    println(User("Ben", 25).email)         // ""
    println(User("Cal", 30, "c@x.io").email)
}

Argumentos nomeados

Ignore a ordem posicional e nomeie os parâmetros no ponto da chamada — especialmente útil com valores padrão.

class HttpClient(
    val baseUrl: String,
    val timeoutMs: Int = 5000,
    val retries: Int = 3
)
fun main() {
    val c = HttpClient(
        baseUrl = "https://api.example.com",
        retries = 5
    )
    println("retries=${c.retries} timeout=${c.timeoutMs}")
}

Visibilidade do construtor

Use private constructor para impedir a criação de instâncias externas — algo comum quando combinado com métodos de fábrica.

class Singleton private constructor() {
    companion object {
        val instance = Singleton()
    }
}
fun main() {
    val s = Singleton.instance
    println(s)
}

Construtores secundários

Adicione construtores adicionais com a palavra-chave constructor. Eles devem delegar ao construtor primário com this(...).

class Point(val x: Int, val y: Int) {
    constructor(value: Int) : this(value, value)
}
fun main() {
    println("${Point(3).x}, ${Point(3).y}") // 3, 3
}

Construtor com visibilidade

Você pode combinar diferentes níveis de visibilidade por construtor — algo útil para bibliotecas.

class Lib internal constructor(val key: String) {
    companion object {
        fun create(key: String) = Lib(key)
    }
}
fun main() {
    println(Lib.create("abc").key)
}

Recapitulação dos blocos init

O código que deve ser executado durante a construção fica em um bloco init { }. Vários blocos init são executados na ordem em que aparecem no código-fonte.

class Validator(val value: String) {
    init { require(value.isNotBlank()) { "value cannot be blank" } }
}
fun main() {
    println(Validator("ok").value)
    // Validator("") // throws IllegalArgumentException
}

Combinando propriedades e lógica

Declarações de propriedades, construtores secundários e blocos init se combinam em um fluxo de inicialização flexível.

class Account(
    val owner: String,
    initialBalance: Double = 0.0
) {
    var balance: Double = initialBalance
        private set
    init {
        require(initialBalance >= 0) { "balance must be non-negative" }
    }
    fun deposit(amount: Double) { balance += amount }
}
fun main() {
    val a = Account("Alice", 100.0)
    a.deposit(50.0)
    println("${a.owner}: ${a.balance}") // Alice: 150.0
}

Verificação rápida

O que a palavra-chave val faz quando usada em um parâmetro do construtor primário?

Recapitulação

O construtor primário fica no cabeçalho da classe. Use val/var para parâmetros de propriedades; parâmetros simples ficam locais ao construtor. Adicione valores padrão para reduzir sobrecargas e execute a lógica de configuração em blocos init. Construtores secundários delegam por meio de this(...).

Perguntas Frequentes

A aula “Construtor primário e parâmetros de propriedades” é grátis?

Sim — o texto completo de “Construtor primário e parâmetros de propriedades” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “Construtor primário e parâmetros de propriedades”?

Declare classes com construtores primários e declarações de propriedades na própria classe. Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Construtor primário e parâmetros de propriedades”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Construtor primário e parâmetros de propriedades
  2. Blocos init e ordem de inicialização
  3. Getters e setters personalizados com field
  4. lateinit e inicialização tardia
← Voltar para Kotlin Academy