Qual è la differenza tra un metodo astratto in Java e Kotlin?
sobes.tech AI
Risposta dell'AI
In Java, un metodo astratto viene dichiarato in una classe astratta e non ha implementazione. La classe che contiene un metodo astratto deve essere dichiarata come astratta, e tutti i discendenti sono obbligati a implementare questo metodo se non sono astratti.
In Kotlin, i metodi astratti sono anch'essi dichiarati in classi astratte, ma c'è una differenza importante: in Kotlin, è possibile dichiarare metodi con implementazione in classi astratte (open o abstract), e le interfacce possono contenere metodi con implementazione (metodi di default). Un metodo astratto in Kotlin è un metodo senza corpo, che deve essere sovrascritto nelle sottoclassi.
Esempio in Kotlin:
abstract class Animal {
abstract fun makeSound()
fun sleep() {
println("Sleeping")
}
}
Qui, makeSound è un metodo astratto, sleep è un metodo con implementazione.
Pertanto, la differenza è che Kotlin è più flessibile nella definizione di metodi con implementazione in classi astratte e interfacce, mentre Java richiede che i metodi astratti siano senza implementazione e si trovino in classi astratte o interfacce con metodi di default.