using System;
namespace Interface
{
class Program
{
/*
Interfaces(Arayüz)
Interface in amacı bir classın nasıl bir arayüze sahip olacağını belirtmesidir. Binevi tanımlayıcısı, rehberidir.
* Bir interface classa benzer, fakat aşağıdaki bazı özellikleri sağlar. Bir interface aşağıdaki yönlerden dolayı özeldir.
* Bütün interface üyeleri abstract tır. Aksine class üyeleri hem abstract(soyut) hemde conrete(somut) olabilirler.
* Bir class(struct) a birden fazla interface uygulanabilir. Aksine bir class a sadece bir class tan miras(inherit) alabilir . struct hiç birine mirasçı(inherit) olamaz.
Interface tanımlarken class gibi tanımlarız. Ama interface de kod kısmı olmaz. Bütün elemanları class ya da struct ta tanımlarız.
* Bir interface metodlarrı, özellikleri(properties), events(olayları) ve indexer içerebilir.
* Aşağıdaki örneği inceleyelim
*
* Burada tüm elemanlar public tir ve başına access modifiers getirlemez.
*/
public interface IEnumerator//interface oluşturuken başına I harfi koymak bir kültürdür zorunlu değildir.
{
// private int Deneme { get; set; }//Hata interface elemanlarındı access modifiers uygulanamaz.
bool MoveNext();
object Current { get; }
void Reset();
}
//Şimdi bu interface mizi class içerisine uygulayalım.
internal class Countdown : IEnumerator
{
int count = 11;
//bool MoveNext() { return count-- > 0; }//Hata tüm IEnumaratorlar public olduğu için class içerisindeki karşılıklarıda public olmalıdır.
public bool MoveNext() { return count-- > 0; }
public object Current { get { return count; } }
public void Reset() { throw new NotSupportedException(); }
}
static void Main(string[] args)
{
IEnumerator e = new Countdown();//Bir IEnumarator bir classın değerini alabilir.
while (e.MoveNext())
Console.WriteLine(e.Current);
Console.ReadKey();
}
}
}
EK