Z
ZHANK
面向对象

数据类 data class

data class 自动生成 equals/hashCode/toString/copy/componentN

数据类 data class

data class 专为持有数据而生——自动生成 equals/hashCode/toString/copy/componentN。

学完本章你将: 掌握 data class 自动方法、copy 复制、解构。


基本用法

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

val u1 = User("小明", 25)
val u2 = User("小明", 25)

println(u1 == u2)           // true——值相等(不是引用相等)
println(u1)                 // User(name=小明, age=25)

copy 复制

kotlin
val u1 = User("小明", 25)
val u2 = u1.copy(age = 26)      // 只改 age
val u3 = u1.copy()              // 完全复制

println(u2)    // User(name=小明, age=26)

解构声明

kotlin
val user = User("小明", 25)
val (name, age) = user     // component1() + component2()

println(name)    // 小明
println(age)     // 25

限制

kotlin
// ✅ data class 要求:
// - 主构造函数至少一个参数
// - 所有参数必须是 val 或 var
// - 不能是 abstract/open/sealed/inner

// ❌ 不能继承(但可实现接口)
data class Point(val x: Int, val y: Int)  // final