Junior
Kotlin'da ma'lumotlar sinflari qanday ishlaydi?
sobes.tech AI
AIdan javob
Kotlin'da ma'lumotlar sinflari ma'lumotlarni saqlash uchun ishlatiladi. Kompilyator ular uchun standart metodlarni avtomatik ravishda yaratadi:
equals(): Ob'ektlarni ularning xususiyatlarining qiymatlari asosida solishtiradi.hashCode(): Xususiyatlarning qiymatlari asosida hash kodini yaratadi.toString(): Barcha xususiyatlarning nomlari va qiymatlarini o'z ichiga olgan satr ko'rinishini qaytaradi.copy(): Ob'ektning nusxasini yaratadi, kerak bo'lsa, belgilangan xususiyatlarning qiymatlarini o'zgartiradi.componentN(): Ob'ektni bo'laklarga ajratish uchun metodlar.
// Ma'lumotlar sinfi misoli
data class User(val name: String, val age: Int)
fun main() {
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
val user3 = User("Bob", 25)
// equals()
println(user1 == user2) // true
println(user1 == user3) // false
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() va destrukturing
val (name, age) = user1
println("Ism: $name, Yoshi: $age") // Ism: Alice, Yoshi: 30
}
Asosiy nuqtalar:
- Asosiy konstruktorida belgilangan barcha xususiyatlar
valyokivarbo'lishi kerak. - Ma'lumotlar sinfi
abstract,open,sealedyokiinnerbo'lishi mumkin emas. - Ma'lumotlar sinflari boshqa sinflardan meros olishi yoki interfeyslarni amalga oshirishi mumkin.
- Asosiy konstruktor tashqarisida e'lon qilingan xususiyatlar standart metodlarning yaratilishida qatnashmaydi.
| Metod | Tavsifi |
|---|---|
equals() |
Asosiy konstruktor xususiyatlarini solishtiradi. |
hashCode() |
Asosiy konstruktor xususiyatlariga asoslangan hash kodini yaratadi. |
toString() |
Asosiy konstruktor xususiyatlarining satr ko'rinishini chiqaradi. |
copy() |
Xususiyatlarni o'zgartirish imkoniyatiga ega bo'lgan yuzaki nusxa yaratadi. |
componentN() |
Konstruktor deklaratsiyasiga muvofiq xususiyatlarga kirish. |
Ma'lumotlar sinflari POJO (Plain Old Java Object) yoki DTO (Data Transfer Object) bilan ishlashni sezilarli darajada soddalashtiradi va boilerplate kodni kamaytiradi.