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.