Junior
Kotlin-də digər siniflərlə müqayisədə Data Class-ın xüsusiyyəti nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də Data Class xüsusiyyətləri:
equals(),hashCode(),toString(),copy()vəcomponentN()funksiyalarının avtomatik yaradılması.- Minimal bir parametr konstruktorunda tələb olunur.
- 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 (varsayılan olaraq 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
}