Sobes.tech
Middle

Kotlin жана Javaдагы интерфейстердин айырмачылыктары эмнеде?

sobes.tech AI

AIден жооп

Негизги айырмачылыктар:

  • Дефолт ыкмаларды ишке ашыруу: Java 8 жана андан кийинки версияларда интерфейстерде денеси бар ыкмаларды ишке ашырууга болот (default methods). Kotlinде, интерфейстердеги ыкмалардын денелери бар. default ачкыч сөзү талап кылынбайт.

  • Абстракт жана ачык ыкмалар: Javaда бардык интерфейс ыкмалары косумдуу абстракттуу. Денеси бар ыкманы түзүү үчүн default колдонулат. Kotlinде, денеси бар интерфейс ыкмалары косумдуу open жана интерфейсти ишке ашырган класстарда кайра аныкталышы мүмкүн. Денеси жок ыкмалар косумдуу abstract.

  • Мүлк (Properties): Javaда интерфейстерде талаалар болбойт, тек гана константтар (final static). Kotlinде, интерфейстер абстракттык мүлктөрдү же алдын ала аныкталган геттер/сеттер менен мүлктөрдү жарыялай алат (backstage field сакталбайт).

  • Конструкторлор: Javaда интерфейстерде конструкторлор болбойт. Kotlinде, интерфейстерде конструкторлор болбойт.

  • Көрсөтүү модификаторлору: Javaда, интерфейс ыкмалары косумдуу public. Kotlinде, интерфейс ыкмалары косумдуу public open.

Өзгөчөлүк Kotlin Java
Ыкмаларды ишке ашыруу Ишке ашырылган (алдын ала белгиленген) Ишке ашырылган (с default)
Абстракттык ыкмалар Денеси жок - abstract, денеси бар - open Денеси жок - abstract, денеси бар - default
Мүлк (Properties) Ишке ашырылган (абстракттык же геттер/сеттер менен) Ишке ашырылган эмес (тек гана константтар)
Конструкторлор Ишке ашырылган эмес Ишке ашырылган эмес
Көрсөтүү модификатору public open алдын ала белгиленген public алдын ала белгиленген

Кыскача Kotlin:

interface MyInterface {
    val myProperty: String // Абстракттык мүлк

    fun abstractMethod() // Абстракттык ыкма

    fun defaultMethod() {
        // Алдын ала ишке ашыруу
        println("Default implementation in Kotlin interface")
    }
}

Кыскача Java:

interface MyInterfaceJava {
    // Мүлктөр жок, гана константтар уруксат берилет
    // public static final String MY_CONSTANT = "value";

    void abstractMethod(); // Абстракттык ыкма (жеке жана абстракт)

    default void defaultMethod() { // Алдын ала ишке ашырылган ыкма
        // Алдын ала ишке ашыруу
        System.out.println("Default implementation in Java interface");
    }
}