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 name və age 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.