using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
//interfacelerin kullanımı abstract classlar gibidir. en önemli farkları birden fazla arayüz ile kalıtım yapılabilmesidir.
interface IArayuz1//IArayuz1 isminde interface oluşturuldu.
{
void Metot1();
}
interface IArayuz2 : IArayuz1//IArayuz2 arayüzü IArayuz1 arayüzünü kalıtım olarak aldı.
{
new void Metot1();//Metot1 iisimleri aynı olduğu için new anahtar kelimesi kondu. Metot2 yaızlsaydı gerek yoktu.
}
class Deneme: IArayuz2//Deneme sınıfı IArayuz2 yi kalıtım olarak aldı.
{
void IArayuz2.Metot1()//Metot isimleri aynı olduğu için önce arayüz sonra metot ismi yazıldı ve ekrana yazdırma işlemi gerçekleşti.
{
Console.WriteLine(“IArayuz2-Metot1 Çalıştı”);
}
void IArayuz1.Metot1()
{
Console.WriteLine(“IArayuz1-Metot1 Çalıştı”);
}
}
class Program
{
static void Main(string[] args)
{
Deneme dnm = new Deneme();//deneme sınıfının nesnesi oluşturuldu.
((IArayuz2)dnm).Metot1();//metot1 çalıştırılması için nesne önce IArayuz2’e dönüştürüldü sonra metot çalıştırıldı.
((IArayuz1)dnm).Metot1();//metot1 çalıştırılması için nesne önce IArayuz2’e dönüştürüldü sonra metot çalıştırıldı.
Console.ReadKey();
}
}
}





