0Pricing
Android Academy · Aula

Classes de dados

Classes concisas para armazenar dados.

Classes de dados é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 4 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 Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

O que é uma classe de dados?

Uma classe de dados é uma classe criada para armazenar dados. O Kotlin gera automaticamente métodos úteis para ela.

Você declara uma escrevendo data antes de class.

Declarando uma classe de dados

Uma classe de dados precisa de pelo menos um parâmetro no construtor primário, marcado com val ou var.

Aqui temos um User que armazena um nome e uma idade.

data class User(val name: String, val age: Int)

fun main() {
    val u = User("Ada", 30)
    println(u.name)
}

Um toString legível

Uma classe comum imprime um endereço enigmático. Uma classe de dados gera um toString claro, mostrando cada propriedade.

Isso torna a depuração muito mais fácil.

data class User(val name: String, val age: Int)

fun main() {
    val u = User("Ada", 30)
    println(u)
}

Comparando com equals

As classes de dados são comparadas pelo conteúdo, não pela identidade. Dois objetos com os mesmos valores de propriedade são iguais com ==.

Uma classe comum diria que eles são diferentes.

data class Point(val x: Int, val y: Int)

fun main() {
    val a = Point(1, 2)
    val b = Point(1, 2)
    println(a == b)
}

A função copy

A função copy gerada cria um novo objeto com base em um objeto existente. Você pode alterar apenas as propriedades que indicar.

O original permanece inalterado.

data class User(val name: String, val age: Int)

fun main() {
    val u = User("Ada", 30)
    val older = u.copy(age = 31)
    println(older)
}

Desestruturação

As classes de dados oferecem suporte à desestruturação: separar as propriedades em variáveis distintas em uma única linha.

A ordem segue a do construtor.

data class User(val name: String, val age: Int)

fun main() {
    val (name, age) = User("Sam", 25)
    println(name + " " + age)
}

Os valores padrão também funcionam

Assim como em qualquer construtor, os parâmetros de uma classe de dados podem ter valores padrão.

Isso permite que quem chama o construtor omita os campos desnecessários.

data class User(val name: String, val active: Boolean = true)

fun main() {
    val u = User("Lee")
    println(u)
}

hashCode para coleções

As classes de dados também geram hashCode, portanto funcionam corretamente como chaves em um Set ou Map.

Objetos iguais produzem o mesmo hash, então as duplicatas são detectadas.

data class Point(val x: Int, val y: Int)

fun main() {
    val set = setOf(Point(1, 1), Point(1, 1))
    println(set.size)
}

Quando usar classes de dados

Escolha uma classe de dados quando um objeto principalmente transporta valores, em vez de ter um comportamento complexo.

  • Respostas de APIs
  • Estado da interface do usuário no Android
  • Registros de banco de dados

Para objetos com muita lógica, uma classe comum é mais adequada.

Classes de dados poupam trabalho

Uma única palavra-chave data fornece toString, equals, hashCode, copy e suporte à desestruturação.

Isso representa muito código repetitivo que você não precisa mais escrever ou manter manualmente.

Classe de dados versus classe comum

Uma classe comum é comparada pela identidade e imprime uma referência de memória. Uma classe de dados é comparada pelo conteúdo e imprime seus valores.

A palavra-chave data é o que habilita todos esses comportamentos gerados.

class Plain(val x: Int)
data class Smart(val x: Int)

fun main() {
    println(Plain(1) == Plain(1))
    println(Smart(1) == Smart(1))
}

Verificação rápida

Teste sua compreensão sobre classes de dados.

Recapitulação

Você aprendeu que uma classe de dados gera automaticamente toString, equals, hashCode, copy e suporte à desestruturação.

Elas são ideais para objetos que transportam valores, como estados da interface do usuário e modelos de API. Agora você já estudou funções, classes, construtores e classes de dados em Kotlin.

Perguntas Frequentes

A aula “Classes de dados” é grátis?

Sim — o texto completo de “Classes de dados” é 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 Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “Classes de dados”?

Classes concisas para armazenar dados. Você pratica Android 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 Android Academy?

Nenhuma experiência prévia é necessária. Android 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 4 de 4.

Quanto tempo leva a aula “Classes de dados”?

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 Android Academy?

Sim. Cada aula de Android 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. Declarando funções
  2. Classes e propriedades
  3. Construtores e init
  4. Classes de dados
← Voltar para Android Academy