Sobes.tech
Junior

Kotlinдеги башка класстарга салыштырмалуу Data Class өзгөчөлүгү эмнеде?

sobes.tech AI

AIден жооп

Kotlinдеги Data Class өзгөчөлүктөрү:

  • equals(), hashCode(), toString(), copy() жана componentN() функциялары автоматтык түрдө түзүлөт.
  • Кеминде бир параметр конструктордо талап кылынат.
  • Бардык конструктор параметрлери val же var катары жарыялануусу керек.
  • Башкы максаты — маалыматтарды сактоо.

Мисал:

// Жөнөкөй класс
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) // жалган (өзүнчө шилтемелерди салыштырат)
    println(user1.toString()) // User@hashcode сыяктуу чыгат

    val dataUser1 = DataUser("Alice", 30)
    val dataUser2 = DataUser("Alice", 30)
    println(dataUser1 == dataUser2) // чын (маалыматтарды салыштырат)
    println(dataUser1.toString()) // DataUser(name=Alice, age=30)
}

Жасалган функциялардын айырмачылыктары:

Функция Жөнөкөй класс Data Class
equals() шилтемелерди салыштырат талаалар боюнча салыштырат
hashCode() ишке ашырууга көз каранды талаалар боюнча көз каранды
toString() класс аты жана хэш коду класс аты жана талаалардын маанилери
copy() Жок (кол менен ишке ашыруу керек) Оңой көчүрмө түзүүгө мүмкүндүк берет
componentN() Жок Ооба (объектти бөлүп алууга мүмкүндүк берет)

componentN() колдонуу:

// Data Class аныктоо
data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(10, 20)
    val (x, y) = p // component1(), component2() аркылуу бөлүп алуу
    println("x: $x, y: $y") // x: 10, y: 20
}