Sobes.tech
Middle

Kotlin ve Java'daki arayüzler arasındaki farklar nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ana farklar:

  • Varsayılan yöntemlerin uygulanması: Java 8 ve üzerindeki sürümlerde, arayüzlerde gövdeye sahip yöntemler (varsayılan yöntemler) uygulanabilir. Kotlin'de, arayüzlerde yöntemlerin varsayılan gövdeleri vardır. default anahtar kelimesine gerek yoktur.

  • Soyut ve açık yöntemler: Java'da, arayüzdeki tüm yöntemler varsayılan olarak soyut kabul edilir. Gövdeye sahip bir yöntem yapmak için default kullanılır. Kotlin'de, gövdesi olan arayüz yöntemleri otomatik olarak open kabul edilir ve arayüzü uygulayan sınıflarda geçersiz kılınabilir. Gövdesiz yöntemler otomatik olarak abstract'tır.

  • Durum (Properties): Java'da, arayüzler alan içeremez, sadece sabitler (final static) içerir. Kotlin'de, arayüzler soyut özellikler veya varsayılan getter/setter'lara sahip özellikler ilan edebilir (backstage alanlar veri tutmaz).

  • Yapıcılar: Java'da, arayüzler yapıcı içeremez. Kotlin'de, arayüzler yapıcı içeremez.

  • Görünürlük belirteçleri: Java'da, arayüz yöntemleri otomatik olarak public'tir. Kotlin'de, arayüz yöntemleri otomatik olarak public open'dir.

Özellik Kotlin Java
Yöntemlerin uygulanması İzin verilir (varsayılan) İzin verilir (default ile)
Yöntemlerin soyutluğu Gövdesiz - abstract, gövdeyle - open Gövdesiz - abstract, gövdeyle - default
Durum (Properties) İzin verilir (soyut veya erişici ile) İzin verilmez (sadece sabitler)
Yapıcılar İzin verilmez İzin verilmez
Görünürlük belirteci public open varsayılan public varsayılan

Kotlin örneği:

interface MyInterface {
    val myProperty: String // Soyut özellik

    fun abstractMethod() // Soyut yöntem

    fun defaultMethod() {
        // Varsayılan uygulama
        println("Kotlin arayüzünde varsayılan uygulama")
    }
}

Java örneği:

interface MyInterfaceJava {
    // Özellik yok, sadece sabitler izinlidir
    // public static final String MY_CONSTANT = "değer";

    void abstractMethod(); // Soyut yöntem (otomatik olarak public ve soyut)

    default void defaultMethod() { // Varsayılan yöntem
        // Varsayılan uygulama
        System.out.println("Java arayüzünde varsayılan uygulama");
    }
}