Mik a különbségek a Kotlin és a Java interfészei között?
sobes.tech MI
Válasz az MI-től
Főbb különbségek:
-
Alapértelmezett módszerek megvalósítása: Java 8-tól kezdődően az interfészekben lehetőség van testtel rendelkező (alapértelmezett) módszerek megvalósítására. Kotlinban az interfészekben lévő módszerek alapértelmezett testtel rendelkeznek. A
defaultkulcsszó nem szükséges. -
Absztrakt és nyitott módszerek: Java-ban az összes interfész módszer implicit módon absztrakt. Testtel rendelkező módszert a
defaultkulcsszóval lehet létrehozni. Kotlinban a testtel rendelkező módszerek az interfészekben implicit módonopen-ek és felülírhatók az interfészt megvalósító osztályokban. A test nélküli módszerek implicit módonabstract-ek. -
Állapot (Tulajdonságok): Java-ban az interfészek nem tartalmazhatnak mezőket, csak állandókat (
final static). Kotlinban az interfészek deklarálhatnak absztrakt tulajdonságokat, amelyeket az osztályoknak kell megvalósítaniuk, vagy alapértelmezett getter/setter tulajdonságokat (a háttérmezők nem tárolnak adatokat). -
Konstruktorok: Java-ban az interfészek nem tartalmazhatnak konstruktort. Kotlinban az interfészek szintén nem tartalmazhatnak konstruktort.
-
Láthatósági módosítók: Java-ban az interfész módszerei implicit módon
public-ek. Kotlinban az interfész módszerei implicit módonpublic open-ek.
| Jellemző | Kotlin | Java |
|---|---|---|
| Módszerek megvalósítása | Engedélyezett (alapértelmezett) | Engedélyezett (default) |
| Módszerek absztraktsága | Test nélküli - abstract, testtel - open |
Test nélküli - abstract, testtel - default |
| Tulajdonságok (Properties) | Engedélyezett (absztrakt vagy hozzáférőkkel) | Nem engedélyezett (csak állandók) |
| Konstruktorok | Nem engedélyezett | Nem engedélyezett |
| Láthatósági módosító | public open alapértelmezett |
public alapértelmezett |
Kotlin példák:
interface MyInterface {
val myProperty: String // Absztrakt tulajdonság
fun abstractMethod() // Absztrakt módszer
fun defaultMethod() {
// Alapértelmezett implementáció
println("Kotlin interfész alapértelmezett implementáció")
}
}
Java példák:
interface MyInterfaceJava {
// Nincs tulajdonság, csak állandók engedélyezettek
// public static final String MY_CONSTANT = "érték";
void abstractMethod(); // Absztrakt módszer (implicitly public and abstract)
default void defaultMethod() { // Alapértelmezett módszer
// Alapértelmezett implementáció
System.out.println("Java interfész alapértelmezett implementáció");
}
}