Son Haberler
Anasayfa / Yazılım / C# / Interface (Arayüz)

Interface (Arayüz)

Interfaceler, class veya struct gibi türler için oluşturulmuş modellerdir. Sınıflar değişkenleri, özellikleri, olayları, metotları ve indeksleyicileri tanımlar ve içeriklerini oluşturur, arayüzler ise bir sınıfın temelde hangi üyelerden oluşacağını belirleyen bir nevi şablon yapılarıdır. Bu sayede oluşturulacak sınıflara öncülük edilir ve içermeleri gereken üyelerin ne olacağının standardı belirlenir.

Genelde büyük ölçekli projelerde önem kazanmaktadırlar. Arayüzleri interface anahtar sözcüğü ile tanımlarız. Ara birimleri sınıflar üzerinde uygulamak için ise “:” işareti kullanılır ve geleneksel olarak arabirim isimleri “I” harfi ile başlar, tabi bu bir zorunluluk değildir. Fakat bu şekilde kullanılması evrensel olarak kabul edilir.

Interface ile abstract classlar birbirine oldukça benzerler. Interface bize şunu sağlıyor aslında, kendi içinde belli kuralların tanımlanmasını sağlıyor ve bunu uygulayan classlar içinde bu kuralların bir referans edilmesini sağlıyor. Aksi durumda bu interface’i uygulayan class bu şartları sağlamaz ise program derlenmiyor. Aynı abstract classlarda olduğu gibi metotlar, özellikler, indexerlar, değişkenler hepsinin sadece tanıtımı yani başlığı yazılıyor, gövdesi boş bırakılıyor. Daha sonra bu interface üzerinden implement edilen classlarda bu üyeler aynı şekilde tanımlanıyor ve gövdeleri burada dolduruluyor. Peki abstract classlardan buradaki farkı ne oluyor? Normalde classlar yalnızca bir classdan miras alabilir ama interface ile bir class bir veya birden fazla interfaceden kaılıtım alabiliyor.

Daha önce belirttiğim gibi içleri doldurulmadan bir interface içinde property, event (olay), method, indexer, temsilci (delagate) gibi üyeler tanımlanabilir fakat constructor, destructor ve operator overloading gibi işlemler olamaz. Ayrıca bir interface içinde static metotlar veya static değişkenler tanımlanamaz. Interfaceler implement edildiğinde default olarak public olarak tanımlanmaktadırlar.

Şimdi bir örnek yapalım ve uygulanmasını görelim. Örneğimiz de ekrana beşer beşer artan rakamları interface ve class kullanarak yazdıralım.

 

Peki kendim Interface dışında bir başka metot tanımlayıp işlem yapamazmıyım. Şimdi bunu görelim :

Görüldüğü gibi interface içinde tanımlanmayan bir metotu kendi classım içinde oluşturup kullanabiliyorum, dikkat edilmesi gereken nokta interface içinde olanların mutlaka olmasıdır, ayrıca buna ek olarak biz istediğimiz gibi extend edebiliriz.

Son değinmek istediğim bir nokta daha var, şu soruya cevap vereyim, bir class hem bir classdan miras alıp hemde interface veya interfacelerden implement edilebilir mi? Bunun cevabı tabii ki evet. Fakat burada dikkat edilecek nokta tanımlama da önce miras alınan sınıf yazılır, sonra “,” ile interfaceler..

Örneğin :

TüremisSinif : TuretenSinif, IDeneme1, IDeneme2

gibi..

3 yorum

  1. kemal serhan turhan

    kardesım ellerıne saglık harıka olmus.Devamını bekliyorum.

  2. Teşekkür ederim.

  3. Çok işime yaradı sağolun 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir