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.