Junior
Kotlinдеги маалымат класстары кантип иштейт?
sobes.tech AI
AIден жооп
Котлинде маалымат класстары маалыматтарды сактоо үчүн колдонулат. Компилятор автоматтык түрдө алардын үчүн стандарттык методдорду түзөт:
equals(): Өзгөрмөлөрдүн маанилери негизинде экземплярларды салыштырат.hashCode(): Өзгөрмөлөрдүн маанилери негизинде хеш-код түзөт.toString(): Бардык өзгөчөлүктөрдүн аттары жана маанилери камтылган саптык көрсөтүүнү кайтарат.copy(): Объекттин көчүрмөсүн түзөт, керек болсо белгилүү өзгөчөлүктөрдүн маанилерин өзгөртүп.componentN(): объектти бөлүп көрсөтүү үчүн методдор (объектти бөлүп, жеке өзгөчөлүктөргө бөлүү).
// Маалымат классынын мисалы
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) // чын
println(user1 == user3) // жалган
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() жана бөлүп көрсөтүү
val (name, age) = user1
println("Name: $name, Age: $age") // Name: Alice, Age: 30
}
Ключтуу учурлар:
- Бардык өзгөчөлүктөр, негизги конструктордо аныкталган,
valжеvarболушу керек. - Маалымат классы
abstract,open,sealedжеinnerболбойт. - Маалымат класстары башка класстарды мурас кылышы же интерфейстерди ишке ашырышы мүмкүн.
- Конструктордон тышкары жарыяланган өзгөчөлүктөр стандарттык методдорго катышпайт.
| Метод | Түшүндүрмө |
|---|---|
equals() |
Негизги конструктордон алынган өзгөчөлүктөрдү салыштырат. |
hashCode() |
Негизги конструктордон алынган өзгөчөлүктөрдүн негизинде хеш түзөт. |
toString() |
Негизги конструктордон алынган өзгөчөлүктөрдүн саптык көрсөтүүсү. |
copy() |
Жогорку деңгээлдеги көчүрмө түзөт, өзгөчөлүктөрдү өзгөртүүгө мүмкүнчүлүк берет. |
componentN() |
Конструктордо берилген тартип боюнча өзгөчөлүктөргө жетүү. |
Маалымат класстары POJO (Plain Old Java Object) же DTO (Data Transfer Object) иштөө процессин кыйла жеңилдетет, бойлерплейт кодду азайтат.