Чӣ гуна меросгирӣ дар забони Kotlin амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Дарсгирӣ дар Kotlin асос ёфтааст ба калидвожаҳои open ва override. Синфҳо ва методҳо дар ҳолати пешфарз final мебошанд, ки маънои онро дорад, ки онҳо наметавонанд мерос гирифта шаванд ё баробар карда шаванд. Барои иҷозат додан ба дарсгирӣ, синф ё метод бояд бо модификатори open ишора карда шавад.
Барои эҷоди синфи дарсгирӣ, аз ду нуқта : пас аз номи синфи асосӣ истифода мешавад, ки пас аз он номи синфи асосӣ бо конструктори он меояд.
open class Base(val name: String) {
open fun greet() {
println("Салом, $name")
}
}
Барои баробар кардани методи синфи асосӣ дар синфи дарсгирӣ, модификатори override истифода мешавад.
class Derived(name: String) : Base(name) {
override fun greet() {
println("Тамос, $name")
}
}
Агар синфи асосӣ конструктор бо параметрҳо дошта бошад, синфи дарсгирӣ бояд онро бо калиди super даъват кунад.
Kotlin дастгирӣ мекунад дарсгирии бисёрҷониба аз интерфейсҳо, аммо на аз синфҳо. Як синф метавонад танҳо аз як синф мерос гирад.
Ҳамчунин, синф метавонад аъзои худро ҳамчун protected, internal ё private ишора кунад, ки назорати назари онҳоро барои синфҳои дарсгирӣ ё дар дохили модул маҳдуд мекунад.
Синфҳои абстрактӣ бо калиди abstract эълон карда мешаванд. Онҳо метавонанд ҳам методҳои абстрактӣ (бе иҷроиш) ва ҳам методҳои оддӣ дошта бошанд. Методи абстрактӣ ниёз ба open надорад, зеро интизор меравад, ки онҳо дар синфҳои дарсгирӣ баробар карда шаванд. Синфҳои абстрактӣ мустақиман намешавад инъикос карда шаванд.
abstract class Shape {
abstract fun draw()
open fun printInfo() {
println("Ин шакл аст.")
}
}
Бинобар ин, дар Kotlin дарсгирӣ ба таври равшан тавассути модификаторҳои open ва override назорат карда мешавад, ки хонданро беҳтар мекунад ва даргиронии номуносибро пешгирӣ мекунад.