using System;
namespace Interface1
{
class Program
{
/*
Bir Interface'ı Genişletmek
*
* Bir interface genişletmek class mantığı ile aynıdır.
*/
public interface IUndoable
{
void Undo();
}
public interface IRedoable : IUndoable
{
void Redo();
}
/*Belirtilmiş Interface Uygulaması
İki interfaceimiz aynı metodu içeriyiorsa bunları belirtmemiz gerekiyor.
Örnek verelim
*/
interface I1 { void Foo();}
interface I2 { int Foo();}
public class Widget : I1, I2//Bir classa birden fazla interface uygulamak için arasına virgül koymamız yeterlidir.
{
//public void I1.Foo()//Başına public koyarak I1. Foo yazarsak hata alırız.
public void Foo()//Public void şeklinde yazarsak kendisi otomatik olarak I1 alacaktır.
{
Console.WriteLine("Widget a uygulanan I1.Fonksiyonu");
}
int I2.Foo()//I1.Foo şeklinde yazdığımız zaman public yazmamıza gerek yoktur. İki Interface arasındaki farkı bu şekilde tanımlamalıyız.
{
Console.WriteLine("Widget a uygulanan I2.Fonksiyonu");
return 1;
}
}
static void Main(string[] args)
{
Widget w = new Widget();
w.Foo();//Widget a uygulanan I1.Fonksiyonu
((I1)w).Foo();//Widget a uygulanan I1.Fonksiyonu
((I2)w).Foo();//Widget a uygulanan I2.Fonksiyonu
Console.ReadKey();
}
}
}
Ek