Sobes.tech
Middle

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 default kulcsszó 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 default kulcsszóval lehet létrehozni. Kotlinban a testtel rendelkező módszerek az interfészekben implicit módon open-ek és felülírhatók az interfészt megvalósító osztályokban. A test nélküli módszerek implicit módon abstract-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ódon public 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ó");
    }
}