Ana Sayfa Hakkımda Dersler Blog Mikrofonda İletişim Projeler
Dersler TEMEL · C#

C# Temelleri — Interface

9 dk okuma · Emre Ulutabak
1
Interface nedir?

Bir kafede garson çalışıyor. Müşteri garsona şunu söyler: "Sipariş al, servis yap, hesabı getir." Müşteri garsonun nasıl yapacağıyla ilgilenmez — sadece ne yapacağını bilir.

İşte interface tam olarak budur. Bir sınıfın ne yapacağını tanımlayan ama nasıl yapacağına karışmayan bir sözleşmedir.

2
Neden kullanılır?

Diyelim ki bir ödeme sistemi yazıyorsun. Kredi kartıyla da ödeme yapılabilir, havaleyle de. İkisi de farklı çalışır ama ikisi de ödeme yapar.

Interface sayesinde kodun geri kalanı nasıl ödeme yapıldığını bilmek zorunda kalmaz. Sadece IOdemeServisi'ni kullanır.

3
Nasıl yazılır?
csharp
public interface IOdemeServisi
{
    void OdemeYap(decimal tutar);
    bool OdemeDogrula(string referansNo);
}

public class KrediKartiServisi : IOdemeServisi
{
    public void OdemeYap(decimal tutar)
    {
        Console.WriteLine($"Kredi kartıyla {tutar} TL ödeme yapıldı.");
    }

    public bool OdemeDogrula(string referansNo)
    {
        // doğrulama mantığı...
        return true;
    }
}
💡
Interface isimleri geleneksel olarak büyük 'I' harfiyle başlar: IEmailService, IRepository gibi.
4
Sınıfla farkı

Sınıf hem ne yapacağını hem nasıl yapacağını içerir. Interface yalnızca ne yapacağını tanımlar — içinde kod olmaz, sadece imza vardır.

Bir sınıf birden fazla interface'i uygulayabilir. Bu, C#'ta çoklu kalıtımın kapısıdır.

5
Altın kurallar
💡
Interface bir sözleşmedir. Onu uygulayan sınıf tüm metotları yazmak zorundadır.
💡
Interface'ler dependency injection'ın temelidir. ASP.NET Core'da her servis bir interface üzerinden enjekte edilir.
💡
Somut sınıfa değil, interface'e bağımlı ol. Bu SOLID'in 'D' si: Dependency Inversion.
MİNİ QUIZ
Interface hakkında hangisi doğrudur?
Interface içinde metot gövdesi yazılabilir
Bir sınıf yalnızca bir interface uygulayabilir
Interface ne yapılacağını tanımlar, nasıl yapılacağını değil
Interface isimleri küçük harfle başlar