Kuo skiriasi abstrakti metodas Java ir Kotlin?
sobes.tech AI
Atsakymas iš AI
Java, abstrakti metodas yra deklaruojamas abstrakčioje klasėje ir neturi įgyvendinimo. Klasė, kurioje yra abstraktus metodas, turi būti deklaruota kaip abstract, ir visi paveldėtojai privalo įgyvendinti šį metodą, jei jie nėra abstraktūs.
Kotlin'e, abstraktūs metodai taip pat deklaruojami abstrakčiose klasėse, tačiau yra svarbus skirtumas: Kotlin'e galima deklaruoti metodus su įgyvendinimu abstrakčiose klasėse (open arba abstract), o sąsajos gali turėti metodus su įgyvendinimu (numatytieji metodai). Kotlin'e, abstraktus metodas yra metodas be kūno, kuris turi būti perrašytas pogrupiuose.
Pavyzdys Kotlin'e:
abstract class Animal {
abstract fun makeSound()
fun sleep() {
println("Sleeping")
}
}
Čia, makeSound yra abstraktus metodas, sleep — metodas su įgyvendinimu.
Todėl skirtumas tas, kad Kotlin yra lankstesnis apibrėžiant metodus su įgyvendinimu abstrakčiuose klasėse ir sąsajose, o Java reikalauja, kad abstraktūs metodai neturėtų įgyvendinimo ir būtų abstrakčiuose klasėse arba sąsajose su numatytaisiais metodais.