Wat zijn de verschillen tussen interfaces in Kotlin en Java?
sobes.tech AI
Antwoord van AI
Belangrijkste verschillen:
-
Implementatie van standaardmethoden: In Java 8 en hoger kunnen interfaces methoden met een lichaam implementeren (standaardmethoden). In Kotlin hebben interfaces standaard methoden met een lichaam. Het sleutelwoord
defaultis niet nodig. -
Abstracte en open methoden: In Java zijn alle methoden in interfaces impliciet abstract. Om een methode met lichaam te maken, moet
defaultworden gebruikt. In Kotlin zijn methoden met lichaam in interfaces implicietopenen kunnen worden overschreven in klassen die de interface implementeren. Methoden zonder lichaam zijn implicietabstract. -
Status (Properties): In Java kunnen interfaces geen velden bevatten, alleen constanten (
final static). In Kotlin kunnen interfaces abstracte eigenschappen declareren, die in klassen moeten worden geïmplementeerd, of eigenschappen met standaard getters/setters (backstage fields slaan geen gegevens op). -
Constructors: In Java kunnen interfaces geen constructors bevatten. In Kotlin kunnen interfaces geen constructors bevatten.
-
Zichtbaarheidsmodificatoren: In Java zijn interface-methoden impliciet
public. In Kotlin zijn interface-methoden implicietpublic open.
| Kenmerk | Kotlin | Java |
|---|---|---|
| Implementatie van methoden | Toegestaan (standaard) | Toegestaan (met default) |
| Abstractheid van methoden | Zonder lichaam - abstract, met lichaam - open |
Zonder lichaam - abstract, met lichaam - default |
| Status (Properties) | Toegestaan (abstract of met accessors) | Niet toegestaan (alleen constanten) |
| Constructors | Niet toegestaan | Niet toegestaan |
| Zichtbaarheidsmodificator | public open standaard |
public standaard |
Voorbeeld in Kotlin:
interface MyInterface {
val myProperty: String // Abstracte eigenschap
fun abstractMethod() // Abstracte methode
fun defaultMethod() {
// Standaard implementatie
println("Standaard implementatie in Kotlin interface")
}
}
Voorbeeld in Java:
interface MyInterfaceJava {
// Geen eigenschappen, alleen constanten toegestaan
// public static final String MY_CONSTANT = "waarde";
void abstractMethod(); // Abstracte methode (impliciet publiek en abstract)
default void defaultMethod() { // Standaardmethode
// Standaard implementatie
System.out.println("Standaard implementatie in Java interface");
}
}