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.
defaultanahtar 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
defaultkullanılır. Kotlin'de, gövdesi olan arayüz yöntemleri otomatik olarakopenkabul edilir ve arayüzü uygulayan sınıflarda geçersiz kılınabilir. Gövdesiz yöntemler otomatik olarakabstract'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 olarakpublic 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");
}
}