Sobes.tech
Junior — Middle

Aký je rozdiel medzi abstraktnou metódou v Jave a Kotlin?

sobes.tech AI

Odpoveď od AI

V Jave, je abstraktná metóda deklarovaná v abstraktnej triede a nemá implementáciu. Trieda obsahujúca abstraktnú metódu musí byť deklarovaná ako abstract a všetci jej potomkovia sú povinní túto metódu implementovať, ak nie sú abstraktné.

V Kotlinu sú abstraktné metódy tiež deklarované v abstraktných triedach, ale existuje dôležitý rozdiel: v Kotlinu je možné deklarovať metódy s implementáciou v abstraktných triedach (open alebo abstract), a rozhrania môžu obsahovať metódy s implementáciou (predvolené metódy). Abstraktná metóda v Kotlinu je metóda bez tela, ktorú je potrebné prepísať v podtriedach.

Príklad v Kotlinu:

abstract class Animal {
    abstract fun makeSound()
    fun sleep() {
        println("Sleeping")
    }
}

Tu je makeSound abstraktná metóda, sleep je metóda s implementáciou.

Rozdiel je teda v tom, že Kotlin je flexibilnejší v definovaní metód s implementáciou v abstraktných triedach a rozhraniach, zatiaľ čo Java vyžaduje, aby abstraktné metódy nemali implementáciu a nachádzali sa v abstraktných triedach alebo rozhraniach s predvolenými metódami.