Junior
Kotlin'dagi boshqa sinflarga nisbatan Data Class ning xususiyati nima?
sobes.tech AI
AIdan javob
Kotlin'da Data Class xüsusiyyətləri:
equals(),hashCode(),toString(),copy()vəcomponentN()funksiyalarının avtomatik yaradılması.- Ən azı bir parametr tələb edir.
- Bütün konstruktor parametrləri
valvə yavarkimi elan edilməlidir. - Əsasən məlumatların saxlanması üçün nəzərdə tutulmuşdur.
Nümunə:
// Adi sinif
class User(val name: String, val age: Int)
// Data Class
data class DataUser(val name: String, val age: Int)
fun main() {
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
println(user1 == user2) // false (əvvəlcə referansları müqayisə edir)
println(user1.toString()) // User@hashcode kimi göstərəcək
val dataUser1 = DataUser("Alice", 30)
val dataUser2 = DataUser("Alice", 30)
println(dataUser1 == dataUser2) // true (məlumatları müqayisə edir)
println(dataUser1.toString()) // DataUser(name=Alice, age=30) göstərəcək
}
Yaradılan funksiyalarda fərqlər:
| Funksiya | Adi sinif | Data Class |
|---|---|---|
equals() |
Referansların müqayisəsi | Məlumatların sahələr üzrə müqayisəsi |
hashCode() |
İcraata bağlıdır | Sahələrə görə məlumatların asılılığı |
toString() |
Sinif adı və hash kodu | Sinif adı və sahə dəyərləri |
copy() |
Xeyr (əllə tətbiq tələb edir) | Bəli (asandlıqla nüsxələr yarada bilər) |
componentN() |
Xeyr | Bəli (obyekti destruktur etməyə imkan verir) |
componentN() istifadə:
// Data Class tərifi
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(10, 20)
val (x, y) = p // component1(), component2() ilə destrukturasiya
println("x: $x, y: $y") // x: 10, y: 20 göstərəcək
}