Junior
Quali sono le principali differenze tra una classe e un'interfaccia in Kotlin?
sobes.tech AI
Risposta dell'AI
- Classe: può contenere proprietà (stati) e funzioni (comportamento). Può essere astratta, aperta (per ereditarietà) o finale. I costruttori definiscono come creare gli oggetti. Supporta l'ereditarietà da una singola classe e l'implementazione multipla di interfacce.
- Interfaccia: definisce un contratto di comportamento che le classi devono implementare. Può contenere dichiarazioni astratte di funzioni e proprietà, così come funzioni con implementazione (Java 8+). Non può contenere stati (proprietà con campo di supporto). Una classe può implementare più interfacce. Non ha costruttori.
Tabella comparativa:
| Aspetto | Classe | Interfaccia |
|---|---|---|
| Stato | Può avere proprietà con valore. | Non può avere proprietà con valore (solo astratte). |
| Costruttori | Possono esistere. | Non ne hanno. |
| Implementazione | Può fornire implementazione completa. | Fornisce implementazione parziale o completa (con metodi di default). |
| Ereditarietà | Eredita da una sola classe. | Implementa più interfacce. |
| Inizializzazione | Può essere istanziata. | Non può essere istanziata direttamente. |
| Tipo | Concreta o astratta. | Solo contratto di comportamento. |
Esempio di classe:
class Person(val name: String) { // classe con costruttore e proprietà
fun greet() {
println("Hello, my name is $name")
}
}
Esempio di interfaccia:
interface Greeter { // interfaccia con metodo
fun greet()
}
class EnglishGreeter : Greeter { // classe che implementa l'interfaccia
override fun greet() {
println("Hello!")
}
}