【2023】Kotlin教程 第二篇 面向对象与函数式编程 第10章 面向对象编程 10.8 数据类 10.8.2 使用copy函数
【2023】Kotlin教程 第二篇 面向对象与函数式编程 第10章 面向对象编程 10.8 数据类 10.8.2 使用copy函数
·
【2023】Kotlin教程

第二篇 面向对象与函数式编程
第10章 面向对象编程
Kotlin语言目前还是以面向对象编程为主,函数式编程为辅。面向对象是Kotlin是重要的特性之一。
10.8 数据类
有的时候需要一种数据容器在各个组件之间传递。数据容器只需要一些属性保存数据以就可以了,
例如之前我们写的User 类
class User(val name: String, var password: String)
但是这个User作为数据容器还不完善,最好重写Any的如下三个函数:
-
equals。.比较其他对象是否与当前对象“相等”,==运算符重载equals函数。
-
hashCode。返回该对象的哈希码值,可以提高对Hashtable和HashMap对象的访问效率。
-
toString。返回该对象的字符串表示。
【提示】Any是Kotlin所有类的根类,Kotlin中所有类都直接或间接继承自Any类。虽然重写Any的三个函数,也不是很麻烦,但是如果有很多个属性,代码量还是很多的。Kotlin为此提供了一种数据类(Data Classes)。
10.8.2 使用copy函数
数据类中还提供了一个copy函数,通过copy可以复制一个新的数据类对象,举个栗子:
fun main() {
val user1 = User("Tony", "123")
// 复制
val user2 = user1.copy(name = "Tom")
val user3 = user1.copy()
println(user1 == user2)
println(user1 == user3)
println(user1.toString())
println(user2.toString())
println(user3.toString())
println(user1.hashCode())
println(user2.hashCode())
println(user3.hashCode())
}

user1.copy()语句完全复制了user1给user3,因此user1等于user3。
更多推荐



所有评论(0)