【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。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐