C# Interface(Arayüz)
Bu yazımda C#’ta interface yani arayüzlerden bahsedeceğim.Bireysel çalışmalarımızda pek kullanmayacağımız bu yöntemin, takım çalışmalarında çok önemli yeri vardır.Öncelikle şunu belirtmek isterimki Interface bir class değildir.Interface sadece yapı belirtir.Yani o interfaceden kalıtım alan classların barındırması gereken metod,property vs. gibi elemanları belirtir.Bu konuyu ilk öğrenirken Abstract sınıfıyla Interface arasındaki farkı merak edebilirsiniz.Interface bir binanın planıdır.Salon şurada olacak,mutfak burada vs..Abstract sınıfı ise bir evin içi tamamlanmamış halidir.Mesela salon bitmiş ama mutfak bitmemiş.
Bir zorunluluk olmamakla beraber interface isimlerinin başına I konulması tavsiye edilir.Örn,IDunya.Bununla beraber bir yapının interface olduğu kolayca anlaşılabilir.
Interfaceler, kendisinden kalıtım alan sınıfların içinde olması zorunlu olan yapıları tanımlarlar.Tek görevleri budur.Interfaceler bu yönleriyle abstract classlara benzerler.Ancak abstract class içerisinde,kendisinden kalıtım alan sınıfta yazılması zorunlu olmayacak yapılar da tanımlanabilir.Fakat interface tanımlanan herşey, kalıtımı alan sınıfta uygulanmak zorundadır.Yine abstract classlarda olduğu gibi burada tanımlanan yapıların gövdeleri yazılmaz.Gövdeler, kalıtım alan sınıfta yazılır.
Bir class sadece tek bir classtan kalıtım alabilirken, aynı anda birden fazla interfaceden kalıtım alabilir.
Bir class aynı anda her bir classtan hem de bir ya da birden fazla interfaceden kalıtım alabilir.Ancak kalıtımı yazarken ilk önce classdan kalıtım almalıdır.Yani class : A_Classi,B_Interfacei,C_Interfacei şeklinde.
Interfaceler içinde metod,property ve indexer gibi yapılar tanımlanabilirken , constructor v.s gibi yapılar tanımlanamaz.
Interfaceler içinde static yapılar OLAMAZ.
Interface içindeki yapıların public,private,protected v.s gibi erişim belirleyicileri olmaz.Bu yapılar türeyen classlarda yazılırken erişim belirleyicileri orada belirlenir.
Şimdi buraya kadar Interfaceler hakkında genel bilgilendirmede bulundum.Bir sonraki sayfada Interfaceleri C# üzerinden inceleyelim.

1 Cevap
[…] eğer Interface’ler üzerine zamanında yazmış olduğum makalemin name hiding ile ilgili şu adresteki bölümü okumanızı ve bu makaleye öyle devam etmenizi tavsiye […]