CodeBlanks Logo Icon CodeBlanks

default metot

interface içinde default metodu öğrenirsin.

default metot

Bir default metot, interface içinde gövdesi olan metottur. Uygulayan sınıf isterse onu yeniden yazabilir; yazmazsa interface'teki gövde kullanılır. default anahtar kelimesiyle başlar.

Örnek: interface Logger { default void info(String msg) { System.out.println(msg); } }. Burada info metodu gövdelidir. Uygulayan sınıf info yazmazsa bile bu gövde çalışır. Bu, mevcut interface'lere metot eklerken eski sınıfları bozmamak için kullanılır. Sözleşmeye yeni davranış eklemenin güvenli yoludur. Sınıf yine de isterse metodu override edebilir.

Interface'i bozmadan metot ekleme

Default metotlar, mevcut interface'lere yeni davranış eklemeyi sağlar. Uygulayan sınıfları değiştirmeden yeni metotlar ekleyebilirsin. Bu, geriye dönük uyumluluk için kritiktir.

Örnek: Logger interface'ine default void warn(String msg) eklersen, eski sınıflar bu metodu yazmasa bile çalışır. Yeni sınıflar isterse override eder. Default metot olmadan, interface'e metot eklemek tüm uygulayan sınıfları bozar. Java 8 ile gelen bu özellik, kütüphane geliştiricilerine büyük esneklik kazandırır. Eski kodu kırmadan interface'i büyütmenin resmi yoludur.

Uygulama Logger interface'ine default metot ekle

Logger adında bir interface tanımla. İçine default void info(String msg) metodu ekle; gövdesi System.out.println("Bilgi: " + msg); yazsın. Sonra class ConsoleLogger implements Logger yaz; info metodunu yazmadan boş gövde bırak. main içinde new ConsoleLogger().info("Kayıt başladı") çağır.

Başlangıç kodu

Main.java
// Logger interface'ini tanımla
// default info metodu ekle
// ConsoleLogger implements Logger yaz, info'yu override etme
// main'de info çağır

Örnek çözüm

Main.java
interface Logger {
    default void info(String msg) {
        System.out.println("Bilgi: " + msg);
    }
}
class ConsoleLogger implements Logger {
}
class Main {
    public static void main(String[] args) {
        new ConsoleLogger().info("Kayıt başladı");
    }
}

Beklenen çıktı

Bilgi: Kayıt başladı

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 default metot uygulayan sınıfta yazılmazsa ne olur?

  • Derleme hatası verir
  • Metot silinir
  • Interface'teki gövde çalışır Doğru cevap
  • Çalışma hatası verir

Açıklama: Interface'teki gövde kullanılır.

2 default anahtar kelimesini ekle

Soru
interface Logger {
    ____ void info(String msg) {
        System.out.println(msg);
    }
}
Cevap
interface Logger {
    default void info(String msg) {
        System.out.println(msg);
    }
}

Açıklama: default kelimesi gövdeli interface metodu tanımlar.

3 default metot kavramlarını eşle

Kavram Anlamı
default Gövdeli metot kelimesi
info(String msg) Metot imzası
override Yeniden yazma
backward compatible Geriye dönük uyumlu

Orta seviye bölümündeki tüm dersler