Sobes.tech
Junior — Middle

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.