Junior
Wat zijn de belangrijkste verschillen tussen een klasse en een interface in Kotlin?
sobes.tech AI
Antwoord van AI
- Klasse: kan eigenschappen (toestanden) en functies (gedrag) bevatten. Kan abstract, open (voor overerving) of final zijn. Constructeurs bepalen hoe objecten worden gemaakt. Ondersteunt overerving van één klasse en meervoudige implementatie van interfaces.
- Interface: definieert een gedragscontract dat klassen moeten implementeren. Kan abstracte functies en eigenschappen bevatten, evenals functies met implementatie (Java 8+). Kan geen toestanden bevatten (eigenschappen met back-up veld). Een klasse kan meerdere interfaces implementeren. Heeft geen constructeurs.
Vergelijkingstabel:
| Aspect | Klasse | Interface |
|---|---|---|
| Toestand | Kan eigenschappen met waarde hebben. | Kan geen eigenschappen met waarde hebben (alleen abstract). |
| Constructeurs | Kunnen bestaan. | Hebben ze niet. |
| Implementatie | Kan volledige implementatie bieden. | Biedt gedeeltelijke of volledige implementatie (met standaardmethoden). |
| Overerving | Erft van één klasse. | Implementeert meerdere interfaces. |
| Initialisatie | Kan geïnstantieerd worden. | Kan niet direct geïnstantieerd worden. |
| Type | Concrete of abstracte klasse. | Alleen gedragscontract. |
Voorbeeld van klasse:
class Person(val name: String) { // klasse met constructor en eigenschap
fun greet() {
println("Hello, my name is $name")
}
}
Voorbeeld van interface:
interface Greeter { // interface met methode
fun greet()
}
class EnglishGreeter : Greeter { // klasse die interface implementeert
override fun greet() {
println("Hello!")
}
}