Дар бораи хусусиятҳои кор бо мерос ва намояндагӣ дар Kotlin чӣ гуна аст?
sobes.tech AI
Ҷавоб аз AI
Дар Kotlin, мерослият ба дефолт баста баста баста (final), ва синфҳо ва усулҳо бояд ба таври равшан open нишон дода шаванд, то имконпазирии мерос ва ивазкуниро таъмин кунанд. Мерос танҳо аз як синф дастгирӣ мешавад, аммо метавон чандин интерфейсҳоро татбиқ кард.
Дар мерос, конструктори синфи асосӣ пас аз конструктори синфи таҳияшуда даъват мешавад:
open class Base(val name: String) {
init { println("Инициализатсия кардани Base") }
open fun greeting() { println("Салом аз Base") }
}
class Derived(name: String, val age: Int) : Base(name) {
init { println("Инициализатсия кардани Derived") }
override fun greeting() { println("Салом аз Derived") }
}
Делегатсия дар Kotlin дар сатҳи забон бо истифодаи калимаи калидии by амалӣ мешавад. Он имкон медиҳад, ки иҷрои интерфейс ба объекти дигар гузаронида шавад. Ин алтернатива қулай ба мероси мустақим аст.
interface Greeter {
fun greet(name: String)
}
class GreeterImpl : Greeter {
override fun greet(name: String) {
println("Салом, $name!")
}
}
class DelegateGreeter(greeter: Greeter) : Greeter by greeter
Ин ҷо, DelegateGreeter даъвати усули greet-ро ба объекти greeter делегат мекунад.
Муҳокима:
| Хусусият | Мерос | Делегатсия (by) |
|---|---|---|
| Муносибат | "як аст" (is a) | "дорост" (has a) |
| Иҷро | Тавсеаи мустақим аз синф | Тасдиқи иҷрои ба объекти дигар |
| Мултипликатсия | Як синфи асосӣ | Мултиинтерфейсҳо |
| Флексибиллик | Камтар флексибил | Бештар, тавассути таркиб |
| Намоиш | Наследует protected ва public | Кор мекунад тавассути интерфейсҳо |
Делегатсия аксар вақт нисбат ба мерос барои ба даст овардани флексибиллик ва дурӣ аз мушкилоти "синфи асосии заиф" беҳтар аст.