Sobes.tech
Junior — Middle

Bir data class'ın ana gövdesinde ve yapıcı içinde alanların bildirilmesi arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de, ana yapıcıda (sınıf adından sonra parantez içinde) bildirilen alanlar otomatik olarak sınıfın özellikleri haline gelir ve karşılık gelen equals(), hashCode(), toString() metodlarına sahip olur, ayrıca destrüksiyona katılır.

Örnek:

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

Burada name ve age sınıfın özellikleridir.

Eğer sınıf gövdesi içinde (örneğin yapıcı içinde veya normal bir özellik olarak) bir alan bildirirseniz, bu otomatik oluşturulan data class metodlarına katılmaz ve destrüksiyona dahil edilmez:

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

Burada age normal bir özelliktir, equals ve diğer metodlarda dikkate alınmaz.

Sonuç olarak, ana yapıcıda bildirim yapmak alanı "veri" kısmı yaparken, gövde içinde bildirim yapmak sadece ek bir özellik olur.