CodeBlanks Logo Icon CodeBlanks

Çoklu interface

Birden çok interface uygulamayı öğrenirsin.

Birden fazla interface uygulama

Bir sınıf birden fazla interface uygulayabilir. Interface adları virgülle ayrılır. Sınıf, tüm interface'lerin tüm metotlarını yazmak zorundadır.

Örnek: class Document implements Printable, Savable { ... }. Burada Document hem Printable hem Savable sözleşmelerini uygular. İki interface'in de metotlarını yazmak zorundadır. Java, sınıfların tek sınıftan miras almasına izin verir; ama birden çok interface uygulayabilir. Bu, çoklu kalıtım ihtiyacını güvenli biçimde karşılar. Çakışma olmadığı sürece sınıf istediği kadar interface uygulayabilir. Esnek tasarımın anahtarıdır.

Çoklu interface avantajı

Çoklu interface uygulama, bir sınıfın farklı roller üstlenmesini sağlar. Aynı nesne farklı bağlamlarda farklı sözleşmeler olarak kullanılabilir. Bu, kodun yeniden kullanılmasını artırır.

Örnek: Document hem Printable hem Savable ise, bir printAll(Printable[] items) metoduna da bir saveAll(Savable[] items) metoduna da verilebilir. Tek sınıf, iki farklı iş akışında rol alır. Bu, sınıf hiyerarşisini esnek tutar. Her rol bir interface ile temsil edilir; sınıf rolleri birleştirir. Bu yaklaşım, büyük sistemlerin temiz kalmasına yardımcı olur. İhtiyaç oldukça yeni roller eklenir.

Uygulama Document sınıfına iki interface uygula

Printable adında bir interface tanımla; içine void print() imzasını ekle. Savable adında ikinci bir interface tanımla; içine void save() imzasını ekle. Sonra class Document implements Printable, Savable yaz; her iki metodu public void olarak gövdesiyle yaz. print gövdesi System.out.println("Yazdırılıyor");, save gövdesi System.out.println("Kaydediliyor"); yazsın. main içinde Document d = new Document(); ile d.print() ve d.save() çağır.

Başlangıç kodu

Main.java
// Printable ve Savable interface'lerini tanımla
// Document implements Printable, Savable yaz
// print ve save metodlarını gövdesiyle yaz
// main'de d.print() ve d.save() çağır

Örnek çözüm

Main.java
interface Printable {
    void print();
}
interface Savable {
    void save();
}
class Document implements Printable, Savable {
    public void print() {
        System.out.println("Yazdırılıyor");
    }
    public void save() {
        System.out.println("Kaydediliyor");
    }
}
class Main {
    public static void main(String[] args) {
        Document d = new Document();
        d.print();
        d.save();
    }
}

Beklenen çıktı

Yazdırılıyor
Kaydediliyor

Soru ve cevaplar

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

1 Birden fazla interface adı nasıl ayrılır?

  • Virgül ile Doğru cevap
  • Nokta ile
  • Artı ile
  • Ve ile

Açıklama: interface adları virgülle ayrılır.

2 Çoklu interface rollerini eşle

Kavram Anlamı
Printable Yazdırma rolü
Savable Kaydetme rolü
Document Rolleri birleştiren sınıf
implements Uygulama kelimesi

3 Çoklu implements satırını tamamla

Soru
class Document implements Printable, ____ {
    public void print() { }
    public void save() { }
}
Cevap
class Document implements Printable, Savable {
    public void print() { }
    public void save() { }
}

Açıklama: İkinci interface virgülle eklenir.

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