Sobes.tech
Middle

Kotlin və Java-dakı interfeyslər arasındakı fərqlər nələrdir?

sobes.tech Süni İntellekt

AI-dan cavab

Əsas fərqlər:

  • Varsayılan metodların tətbiqi: Java 8 və yuxarı versiyalarda, interfeyslərdə gövdəsi olan metodlar (varsayılan metodlar) tətbiq oluna bilər. Kotlin-də, interfeyslərdə metodların varsayılan gövdələri var. default açar sözü lazım deyil.

  • Abstrakt və açıq metodlar: Java-da, bütün interfeys metodları qismən abstrakt sayılır. Gövdəsi olan metod yaratmaq üçün default istifadə edilir. Kotlin-də, gövdəsi olan metodlar qismən open və interfeysi həyata keçirən siniflərdə yenidən yaza bilər. Gövdəsiz metodlar qismən abstract.

  • Vəziyyət (Xüsusiyyətlər): Java-da, interfeyslər sahə daxil edə bilməz, yalnız sabitlər (final static). Kotlin-də, interfeyslər abstrakt xüsusiyyətləri elan edə bilər, bunlar siniflərdə həyata keçirilməlidir və ya standart getter/setter ilə xüsusiyyətlər (backstage sahələr məlumat saxlamır).

  • Konstruktorlar: Java-da, interfeyslər konstruktor daxil edə bilməz. Kotlin-də, interfeyslər konstruktor daxil edə bilməz.

  • Görünürlük modifikatorları: Java-da, interfeys metodları qismən public. Kotlin-də, interfeys metodları qismən public open.

Xüsusiyyət Kotlin Java
Metodların tətbiqi İcazə verilir (varsayılan) İcazə verilir (default)
Metodların abstraktlığı Bəhsiz - abstract, bəhəli - open Bəhsiz - abstract, bəhəli - default
Vəziyyət (Xüsusiyyətlər) İcazə verilir (abstrakt və ya accessor ilə) İcazə verilmir (yalnız sabitlər)
Konstruktorlar İcazə verilmir İcazə verilmir
Görünürlük modifikatoru public open varsayılan public varsayılan

Kotlin nümunəsi:

interface MyInterface {
    val myProperty: String // Abstrakt xüsusiyyət

    fun abstractMethod() // Abstrakt metod

    fun defaultMethod() {
        // Varsayılan tətbiq
        println("Kotlin interfeysində varsayılan tətbiq")
    }
}

Java nümunəsi:

interface MyInterfaceJava {
    // Xüsusiyyət yoxdur, yalnız sabitlər icazə verilir
    // public static final String MY_CONSTANT = "dəyər";

    void abstractMethod(); // Abstrakt metod (qismən ictimai və abstrakt)

    default void defaultMethod() { // Varsayılan metod
        // Varsayılan tətbiq
        System.out.println("Java interfeysində varsayılan tətbiq");
    }
}