有時候,代碼要勝過大篇幅的文字描述.
public interface ITest1
{
void Method();
}
public interface ITest2
{
void Method();
}
/// <summary>
/// ITest1,ITest2共用Method的實現
/// </summary>
public class MyInterfaceTest1:ITest1,ITest2
{
public void Method()
{
Console.WriteLine("MyInterfaceTest1.Method");
}
}
/// <summary>
/// ITest1,ITest2單獨調用其各自的實現,且不會調用public void Method(),
/// class MyInterfaceTest2類型的引用無法訪問其介面方法
/// </summary>
public class MyInterfaceTest2:ITest1,ITest2
{
public void Method()
{
Console.WriteLine("MyInterfaceTest2.Method");
}
void ITest1.Method()
{
this.Method();// return "MyInterfaceTest2.Method",這個地方很好玩,本以為是調用ITest1.Method()
Console.WriteLine("ITest1.Method");
}
void ITest2.Method()
{
Console.WriteLine("ITest2.Method");
}
}
}
簡單說明一下,
當一個類實現具有相同方法的兩個介面時
方法中沒有指定介面名,則共用同一實現,否則,介面調用他的顯示實現.
而類執行個體是無法調用其介面的顯示實現的 例如
上文中,如果注釋掉
public void Method()
{
Console.WriteLine("MyInterfaceTest2.Method");
}
MyInterfaceTest2 myt2=new MyInterfaceTest2();
myt2. Method();//錯誤