Sobes.tech
Junior — Middle

შესაძლებელია თუ არა მრავალმხრივი მემკვიდრეობის განხორციელება Kotlin ენისთვის?

sobes.tech AI

პასუხი AI-სგან

Kotlin-ში კლასების მრავალმემკვიდრეობა პირდაპირი მხარდაჭერა არ არის, როგორც Java-ში. კლასი შეიძლება მემკვიდრეობა მხოლოდ ერთი კლასიდან.

თუმცა, Kotlin მხარს უჭერს ინტერფეისების მრავალმემკვიდრეობას, რომლებიც შეიძლება შეიცავდეს დეფოლტ რეალიზაციებს. ეს საშუალებას აძლევს განახორციელოს ქცევა, რომელიც მსგავსია მრავალმემკვიდრეობით.

მაგალითი:

interface A {
    fun foo() { println("A") }
}

interface B {
    fun foo() { println("B") }
}

class C : A, B {
    override fun foo() {
        super<A>.foo()
        super<B>.foo()
    }
}

fun main() {
    val c = C()
    c.foo() // გამოიტანს:
             // A
             // B
}

ამიტომ, Kotlin-ში კლასების მრავალმემკვიდრეობა შეუძლებელია, მაგრამ ინტერფეისების მრავალმემკვიდრეობა რეალიზებადი არის.