Sobes.tech
Junior — Middle

Data class-ın əsas gövdəsində və qurucu daxilində sahələrin elan edilməsi arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də, əsas konstruktor daxilində (sinif adından sonra mötərizədə) elan olunan sahələr avtomatik olaraq sinifin xüsusiyyətlərinə çevrilir və müvafiq equals(), hashCode(), toString() metodlarına malik olur, həmçinin destrukturalamaqda iştirak edir.

Nümunə:

data class User(val name: String, val age: Int)

Burada nameage sinifin xüsusiyyətləridir.

Əgər sinifin bədənində (məsələn, konstruktor daxilində və ya adi xüsusiyyət kimi) sahə elan etsəniz, bu avtomatik yaradılan data class metodlarına daxil olmayacaq və destrukturalamağa daxil edilməyəcək:

data class User(val name: String) {
    var age: Int = 0
}

Burada, age adi xüsusiyyətdir, equals və digər metodlarda nəzərə alınmır.

Beləliklə, əsas konstruktor daxilində elan etmək sahəni "məlumat" hissəsinə çevirir, sinifin bədənində elan isə sadəcə əlavə xüsusiyyətdir.