Sobes.tech
Middle

Kādi ir atšķirības starp Kotlin un Java saskarnēm?

sobes.tech AI

Atbilde no AI

Galvenās atšķirības:

  • Noklusējuma metožu realizācija: Java 8 un jaunākās versijās interfeisos var realizēt metodes ar ķermeni (default methods). Kotlin, interfeisos metodes ir ar noklusējuma ķermeņiem. Atslēgvārds default nav nepieciešams.

  • Abstrakti un atvērti metodes: Java, visi interfeisa metodes ir neizteikti abstrakti. Lai izveidotu metodi ar ķermeni, izmantojiet default. Kotlin, interfeisa metodes ar ķermeni ir neizteikti open un tās var pārdefinēt klasēs, kas realizē interfeisu. Metodes bez ķermeņa ir neizteikti abstract.

  • Īpašības (Properties): Java interfeisos nevar būt lauki, tikai konstantes (final static). Kotlin interfeisos var deklarēt abstraktas īpašības, kuras jārealizē klasēs, vai īpašības ar noklusējuma gatoriem/seteriem (backstage lauks netiek glabāts).

  • Konstruktori: Java interfeisos nevar būt konstruktori. Kotlin interfeisos nevar būt konstruktori.

  • Redzamības modifikatori: Java, interfeisa metodes ir neizteikti public. Kotlin, interfeisa metodes ir neizteikti public open.

Īpašība Kotlin Java
Metožu realizācija Atļauta (pēc noklusējuma) Atļauta (ar default)
Abstraktums metodes Bez ķermeņa - abstract, ar ķermeni - open Bez ķermeņa - abstract, ar ķermeni - default
Īpašības (Properties) Atļautas (abstraktas vai ar piekļuves metodēm) Neatļautas (tikai konstantes)
Konstruktori Neatļauti Neatļauti
Redzamības modifikators public open pēc noklusējuma public pēc noklusējuma

Piemērs Kotlin:

interface MyInterface {
    val myProperty: String // Abstrakta īpašība

    fun abstractMethod() // Abstrakta metode

    fun defaultMethod() {
        // Noklusējuma realizācija
        println("Default implementation in Kotlin interface")
    }
}

Piemērs Java:

interface MyInterfaceJava {
    // Nav īpašību, tikai konstantes ir atļautas
    // public static final String MY_CONSTANT = "value";

    void abstractMethod(); // Abstrakta metode (neizteikta `public` un `abstract`)

    default void defaultMethod() { // Noklusējuma metode
        // Noklusējuma realizācija
        System.out.println("Default implementation in Java interface");
    }
}