Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

ขยายคลาสข้อมูลใน Kotlin


คลาสข้อมูลเป็นคลาสที่เก็บข้อมูลสำหรับแอปพลิเคชัน มันเหมือนกับคลาส POJO ที่เราใช้ใน Java เพื่อเก็บข้อมูล

ใน Java สำหรับ data class เราต้องสร้าง getter และ เซ็ตเตอร์ เมธอดเพื่อเข้าถึงคุณสมบัติของคลาสนั้น ใน Kotlin เมื่อคลาสถูกประกาศเป็นคลาสข้อมูล คอมไพเลอร์จะสร้างวิธีการสนับสนุนที่จำเป็นในการเข้าถึงตัวแปรสมาชิกของคลาสโดยอัตโนมัติ คอมไพเลอร์จะสร้าง getters และ ตัวตั้งค่า สำหรับพารามิเตอร์ตัวสร้าง hashCode(), เท่ากับ(), toString(), copy()

สำหรับคลาสที่จะถือว่าเป็นคลาสข้อมูลใน Kotlin จะต้องปฏิบัติตามเงื่อนไขต่อไปนี้ -

  • ตัวสร้างหลักต้องมีอย่างน้อยหนึ่งพารามิเตอร์

  • พารามิเตอร์คอนสตรัคเตอร์หลักทั้งหมดต้องทำเครื่องหมายเป็น val หรือ วาร์ .

  • คลาสข้อมูลไม่สามารถเป็น นามธรรม เปิด ปิดผนึก หรือ ภายใน

เราไม่สามารถขยายคลาสข้อมูลได้ แต่เพื่อใช้งานคุณลักษณะเดียวกัน เราสามารถประกาศ ซูเปอร์คลาส และแทนที่คุณสมบัติใน คลาสย่อย

ตัวอย่าง

ในตัวอย่างต่อไปนี้ เราจะสร้างคลาสข้อมูลสองคลาส "Student" และ "Book" เราจะสร้างคลาสนามธรรม "ทรัพยากร" ด้วย ภายใน "หนังสือ" เราจะแทนที่คุณสมบัติของคลาส "ทรัพยากร"

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") // implementing abstract class
   println(b.location)
}

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

// override the properties of the Resource class
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