在 Kotlin 中扩展数据类

数据类是保存应用程序数据的类。它就像我们在 Java 中用来保存数据的 POJO 类。

在 Java 中,对于数据类,我们需要创建gettersetter方法来访问该类的属性。在 Kotlin 中,当一个类被声明为数据类时,编译器会自动创建一些访问该类成员变量所需的支持方法。编译器将为构造函数参数创建gettersetter , hashCode(), equals(), toString(), copy()。

对于在 Kotlin 中被视为数据类的类,需要满足以下条件 -

  • 主构造函数至少需要一个参数。

  • 所有主要的构造函数参数都需要标记为valvar

  • 数据类不能是抽象的、开放的、密封的内部的。

我们不能扩展数据类,但为了实现相同的功能,我们可以声明一个超类并覆盖子类中的属性。

示例

在下面的示例中,我们将创建两个数据类“Student”和“Book”。我们还将创建一个抽象类“资源”。在“Book”中,我们将覆盖“Resource”类的属性。

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

fun main(args: Array) {
   val stu = Student("Student1", 29)
   val stu2 = Student("Student2", 30)
   println("Student1 Name is: ${stu.name}")
   println("Student1 Age is: ${stu.age}")
   println("Student2 Name is: ${stu2.name}")
   println("Student2 Age is: ${stu2.age}")
   val b=Book(1L,"India","123222") //实现抽象类
   println(b.location)
}

//声明超类
abstract class Resource {
   abstract var id: Long
   abstract var location: String
}

//覆盖资源类的属性
data class Book (
   override var id: Long = 0,
   override var location: String = "",
   var isbn: String
) : Resource()
输出结果

它将生成以下输出 -

Student1 Name is: Student1
Student1 Age is: 29
Student2 Name is: Student2
Student2 Age is: 30
India