Jaký je rozdíl mezi abstraktní metodou v Java a Kotlin?
sobes.tech AI
Odpověď od AI
V jazyce Java je abstraktní metoda deklarována v abstraktní třídě a nem má implementaci. Třída obsahující abstraktní metodu musí být deklarována jako abstract a všichni její potomci jsou povinni tuto metodu implementovat, pokud nejsou abstraktní.
V Kotlinu jsou abstraktní metody také deklarovány v abstraktních třídách, ale existuje důležitý rozdíl: v Kotlinu lze deklarovat metody s implementací v abstraktních třídách (open nebo abstract) a rozhraní mohou obsahovat metody s implementací (výchozí metody). Abstraktní metoda v Kotlinu je metoda bez těla, kterou je třeba přepsat v podtřídách.
Příklad v Kotlinu:
abstract class Animal {
abstract fun makeSound()
fun sleep() {
println("Sleeping")
}
}
Zde je makeSound abstraktní metoda, sleep je metoda s implementací.
Rozdíl je tedy v tom, že Kotlin je flexibilnější v definici metod s implementací v abstraktních třídách a rozhraních, zatímco Java vyžaduje, aby abstraktní metody neměly implementaci a nacházely se v abstraktních třídách nebo rozhraních s výchozími metodami.