Sobes.tech
Middle

Kotlin va Java'dagi interfeyslar o'rtasidagi farqlar nima?

sobes.tech AI

AIdan javob

Asosiy farqlar:

  • Standart metodlarni amalga oshirish: Java 8 va undan yuqori versiyalarda, interfeyslar ichida tanasi bo'lgan metodlarni (standart metodlar) amalga oshirish mumkin. Kotlin'da, interfeyslar ichidagi metodlar standart tanaga ega. default kalit so'zi kerak emas.

  • Abstrakt va ochiq metodlar: Java'da, interfeysdagi barcha metodlar avtomatik ravishda abstrakt hisoblanadi. Tanasi bo'lgan metodni yaratish uchun default ishlatiladi. Kotlin'da, interfeys ichidagi tanasi bo'lgan metodlar avtomatik ravishda open va interfeysni amalga oshirayotgan sinflarda qayta yozilishi mumkin. Tanasi bo'lmagan metodlar avtomatik ravishda abstract.

  • Holat (Properties): Java'da, interfeyslar maydonlarni o'z ichiga olmaydi, faqat konstantalarni (final static) o'z ichiga oladi. Kotlin'da, interfeyslar abstrakt xususiyatlarni e'lon qilishi mumkin, ularni sinflarda amalga oshirish kerak, yoki standart getter/setter'li xususiyatlar (backstage maydonlar ma'lumot saqlamaydi).

  • Konstruktorlar: Java'da, interfeyslar konstruktorlarni o'z ichiga olmaydi. Kotlin'da, interfeyslar konstruktorlarni o'z ichiga olmaydi.

  • Ko'rinish modifikatorlari: Java'da, interfeys metodlari avtomatik ravishda public. Kotlin'da, interfeys metodlari avtomatik ravishda public open.

Xususiyat Kotlin Java
Metodlarni amalga oshirish Ruxsat etilgan (standart) Ruxsat etilgan (default)
Metodlarning abstrakligi Tanasi bo'lmagan - abstract, tanasi bilan - open Tanasi bo'lmagan - abstract, tanasi bilan - default
Holat (Properties) Ruxsat etilgan (abstrakt yoki accessor'lar bilan) Ruxsat etilmaydi (faqat konstantalar)
Konstruktorlar Ruxsat etilmaydi Ruxsat etilmaydi
Ko'rinish modifikatori public open standart bo'lib keladi public standart bo'lib keladi

Kotlin misoli:

interface MyInterface {
    val myProperty: String // Abstrakt xususiyat

    fun abstractMethod() // Abstrakt metod

    fun defaultMethod() {
        // Standart implementatsiya
        println("Kotlin interfeysida standart implementatsiya")
    }
}

Java misoli:

interface MyInterfaceJava {
    // Xususiyatlar yo'q, faqat konstantalar ruxsat etiladi
    // public static final String MY_CONSTANT = "qiymat";

    void abstractMethod(); // Abstrakt metod (avtomatik ravishda public va abstract)

    default void defaultMethod() { // Standart metod
        // Standart implementatsiya
        System.out.println("Java interfeysida standart implementatsiya");
    }
}