Sobes.tech
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()componentN() funksiyalarının avtomatik yaradılması.
  • Ən azı bir parametr tələb edir.
  • Bütün konstruktor parametrləri val və ya var kimi 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
}