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ó
valhoặcvar. - 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.