Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Kế thừa Data Class trong Kotlin

Giới thiệu

Data class giữ dữ liệu, tương tự POJO Java. Kotlin tự sinh getter/setter, hashCode(), equals(), toString(), copy().

Điều kiện data class

  • Primary constructor ít nhất 1 tham số.
  • Tham số đều có val hoặc var.
  • Không được abstract, open, sealed, inner.

Không thể extends data class trực tiếp. Giải pháp: dùng abstract class cha, override trong sub-class.

Ví dụ

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

fun main(args: Array<String>) {
    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)
}

// Super class abstract
abstract class Resource {
    abstract var id: Long
    abstract var location: String
}

// Sub-class data class override properties
data class Book(
    override var id: Long = 0,
    override var location: String = "",
    var isbn: String
) : Resource()

Kết quả

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

Cách này cho phép tái sử dụng thuộc tính chung qua abstract class mà vẫn tận dụng data class.