Junior
Kotlin-də məlumat sinifləri necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də məlumat sinifləri məlumatların saxlanması üçün istifadə olunur. Kompilyator standart metodları avtomatik olaraq yaradır:
equals(): Nümunələri onların xüsusiyyətlərinin dəyərlərinə əsasən müqayisə edir.hashCode(): Xüsusiyyətlərin dəyərlərinə əsaslanan hash kodu yaradır.toString(): Bütün xüsusiyyətlərin adlarını və dəyərlərini daxil edən sətir nümayəndəsini qaytarır.copy(): Obrazın surətini yaradır və lazım gələrsə, göstərilən xüsusiyyətlərin dəyərlərini dəyişir.componentN(): Obrazın xüsusiyyətlərinə ayrıştırma (destructuring) üçün metodlar.
// Məlumat sinfi nümunəsi
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) // true
println(user1 == user3) // false
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() və destrukturing
val (name, age) = user1
println("Ad: $name, Yaş: $age") // Ad: Alice, Yaş: 30
}
Əsas nöqtələr:
- Əsas konstruktor daxilində təyin olunan bütün xüsusiyyətlər
valvə yavarolmalıdır. - Məlumat sinfi
abstract,open,sealedvə yainnerola bilməz. - Məlumat sinfləri digər sinflərdən irs ala və ya interfeysləri həyata keçirə bilər.
- Əsas konstruktor xaricində elan olunan xüsusiyyətlər standart metodların yaradılmasında iştirak etmir.
| Metod | Təsviri |
|---|---|
equals() |
Əsas konstruktorun xüsusiyyətlərini müqayisə edir. |
hashCode() |
Əsas konstruktorun xüsusiyyətlərinə əsaslanan hash yaradır. |
toString() |
Əsas konstruktorun xüsusiyyətlərinin sətir nümayəndəsini göstərir. |
copy() |
Xüsusiyyətləri dəyişdirmə imkanı ilə səthən kopiya yaradır. |
componentN() |
Konstruktorun elanında ardıcıllıqla xüsusiyyətlərə giriş. |
Məlumat sinfləri POJO (Plain Old Java Object) və ya DTO (Data Transfer Object) ilə işləmək işini əhəmiyyətli dərəcədə sadələşdirir və boilerplate kodunu azaldır.