Sobes.tech
Junior — Middle

Тартиби эълон кардани майдонҳо дар дохили конструктор ва дар тани асосии data class чӣ фарқ дорад?

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin, майдони, ки дар конструктори асосӣ (дар зерин номи синф дар зигзағҳо) эълон мешаванд, автоматӣ ба хусусиятҳои синф табдил меёбанд бо методҳои мувофиқ equals(), hashCode(), toString(), ва инчунин дар деструктуризатсия иштирок мекунанд.

Масалан:

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

Ин ҷо, name ва age хусусиятҳои синф мебошанд.

Агар ба ҷои ин, як майдон дар бадани синф (масалан, дар конструктор ё ҳамчун хусусияти оддӣ) эълон шавад, он дар методҳои data class автоматӣ тавлидшуда иштирок намекунад ва қисми деструктуризатсия намебошад:

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

Ин ҷо, age хусусияти оддӣ аст, ки дар equals ва дигар методҳо ба назар гирифта намешавад.

Бинобар ин, эълон дар конструктори асосӣ майдонро қисми "маълумот" кардани синф мекунад, дар ҳоле ки эълон дар бадани синф танҳо хусусияти иловагӣ мебошад.