default metot
- Java kursu
- Orta seviye
- Ders 49/116
- 5 dk
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
// 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
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
interface Logger {
____ void info(String msg) {
System.out.println(msg);
}
}
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 |