Sobes.tech
Junior — Middle

Koja je razlika između apstraktne metode u Javi i Kotlinu?

sobes.tech АИ

Одговор од АИ

U Javi, apstraktna metoda se deklarise u apstraktnoj klasi i nema implementaciju. Klasa koja sadrzi apstraktnu metodu mora biti deklarisana kao abstract, i svi naslednici su obavezni da implementiraju tu metodu ako nisu apstraktni.

U Kotlinu, apstraktne metode se takođe deklarisu u apstraktnim klasama, ali postoji važna razlika: u Kotlinu, moguće je deklarisati metode sa implementacijom u apstraktnim klasama (open ili abstract), a interfejsi mogu sadržavati metode sa implementacijom (default metode). Apstraktna metoda u Kotlinu je metoda bez tela, koja mora biti prepisana u podklasama.

Primer u Kotlinu:

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

Ovde, makeSound je apstraktna metoda, sleep je metoda sa implementacijom.

Dakle, razlika je u tome što je Kotlin fleksibilniji u definisanju metoda sa implementacijom u apstraktnim klasama i interfejsima, dok Java zahteva da apstraktne metode nemaju implementaciju i da se nalaze u apstraktnim klasama ili interfejsima sa default metodama.