İnterface kelime anlamı olarak arayüz anlamına gelmektedir.Bu anlam C# için gayet uygundur.Cunku interfaceler içerisinde metodların ,özelliklerin tanımlamalarının olduğu ve bu tanımlamların dışında işlem yaptırılamayan uygulama alanlarıdır.Bu nedemek açıklayalım diyelim ki bir islem metodumuz var interfacemizde ve bu islem metodu tanımlayalım:
Using interfaceUygulamasi
{
Public interface Ideneme
{
Void MesajYaz();
}
}
Bu temel interface tanımlamasını incelersek “Public” anahtar kelimesinden sonra aynı sınıf tanımlarken nasıl ‘class’ anahtar kelimesini tanımlıyorsak bunda da ‘interface’ anahtar kelimesini kullanmak zorundayız. Ayrıca dikkat edilmesi gereken bir hususta metodumuzu :
Void MesajYaz(); şeklinde tanımladık interface lerde metodlar ,ozellikler erisim duzeyleri public olarak varsayılır.Bunun için sınıflarımızda metodumuzu erisim seviyeleri ile tanımlıyorduk ama bunda erisim seviyesi yer almıyor eğer yazarsak hata alırız.
Burada asıl anlatmak istediğim bir hususta biz burada dikkat edin sadece metodun ismini yazdık metodun govdesinde herhangi bir işlem yapmadık mesela govdesine :
Console.WriteLine(“ekrana mesaj yazıldı.”); gibi bir işlem yaptırsak dahi hata alırız.Cunku interfaceler yol gösterici görevi görürler.Bunlar işlem yapmaz ama sadece ileride inherit edildikleri sınıflar tarafından sadece rehber görevi görürler.
Arayüzlerin Sahip Olabileceği Üyeler :
– Metodlar (methods)
-Özellikler (properties)
— Olaylar (events)
– İndeksleyiciler (indexers)
Basit bir C# kodu örnegimizi yazalım:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace interfaceUygulamasi { public interface IMusteriBilgileri { void BilgileriGoruntule(); } public interface ISatisBilgileri { void SatisGoruntule(); } class denemeSinifi : IMusteriBilgileri, ISatisBilgileri { public void BilgileriGoruntule() { Console.WriteLine("mesaj musteri bilgileri interface 'i çalıştı."); } public void SatisGoruntule() { Console.WriteLine("satis bilgieri interface ' i kullanıldı."); } } class Program { static void Main(string[] args) { denemeSinifi yeniDeneme =new denemeSinifi () ; yeniDeneme.SatisGoruntule(); yeniDeneme.BilgileriGoruntule(); Console.ReadLine(); } } }
Örneğimiz üzerinden gidelim örneğimiz gayet kısa bunun sebebi interface mantığını kavratmak açısından temel mantığını kavramanın kolaylaştırılmasıdır.Yukarıda açıklamalarda demiştik ki interface ler doğrudan bir işlem yapmaz sadece inherit edildikleri sınıflara yol gösterirler.Bunu biraz daha açalım örneğin ISatisBilgileri interface içerisinde tanımlanmış SatisGoruntule metodunun denemeSinifi içerisinde kullanılmadığı durumlarda hata verir.Yani biz SatisGoruntule metodunu tanımladıktan sonra metod gövdesinde metodun gövdesinde yapacağı işlemleri yapıyoruz.Eğer biz sınıfımızın içerisinde SatisGoruntule metodunu kullanmazsak hata mesajı verir.Bu hata mesajının mantığı interface sınıfında yol gosterici olarak tanımladınız fakat kullanmadınızdır.
İnterface tanımlarken biz interface’mizin önune ‘ I’ harfi getirdik bunu iki interface içinde yaptık bunun zorunluluğu yok fakat hatırlanması açısından tavsiye edilir. Arayüzler için erisim belileyici seviye public olarak kabul edilir bunun için içerisindeki metod,özellik gibi uygulamalar için tekrar erisim belirlemek hata mesajı verir, ayrıca interface ler de kurucu fonksiyon tanımlanamaz.