在 Kotlin 中,data class
和 class
都是用来定义类的关键字,但它们有以下几点区别:
- 自动实现基本方法:
data class
会自动提供equals()
、hashCode()
、toString()
等基本方法的实现,而class
则需要手动实现这些方法。 - 属性必须是 val 或 var:
data class
的所有属性都必须是val
或var
,并且不能是private
,否则编译器会报错。class
的属性可以是任意可见性。 - 主构造函数:
data class
必须有一个主构造函数,并且主构造函数的参数都必须是val
或var
。class
可以没有主构造函数。 - 数据类不能继承其他类:
data class
不能继承其他类(除了Any
),而class
可以继承其他类。 - 不支持抽象属性和抽象方法:
data class
不支持抽象属性和抽象方法,所有的属性和方法都必须是具体的。class
支持抽象属性和抽象方法。