1. 類和結構能夠實現接口
2. 接口聲明包含如下四種類型:屬性、方法、事件和索引;這些函數聲明不能包含任何實現代碼,而在每一個成員的主體後必須使用分號
3. 繼承接口的類或結構必須實現接口中的所有成員
4. 顯示接口的實現注意下面的代碼
class Program
{
static void Main(string[] args)
{
SampleClass_1 sc = new SampleClass_1();
IControl ctr1 = (IControl)sc;
ISurface srfc = (ISurface)sc;
// 調用一樣的方法,繼承
sc.Paint();
ctr1.Paint();
srfc.Paint();
Console.WriteLine();
//顯式接口實現
SampleClass_2 obj = new SampleClass_2();
IControl c = (IControl)obj;
ISurface s = (ISurface)obj;
obj.Paint();
c.Paint();
s.Paint();
Console.ReadKey();
}
}
public interface IControl // 接口可以有訪問修飾符
{
void Paint(); //成員不允許有任何訪問修飾符,默認public
int P { get; }
}
public interface ISurface
{
void Paint();
}
class SampleClass_1:IControl,ISurface
{
//IControl.Paint和ISurface.Paint都會調用這個方法
public void Paint()
{
Console.WriteLine("Paint method in SampleClass");
}
private int _value=10;
public int P
{
get { return _value; }
set { _value = value; } //可以添加set訪問器
}
}
class SampleClass_2:IControl ,ISurface
{
//顯式接口實現
void IControl.Paint() //這時候不能加訪問修飾符public, 要完全和接口定義一致
{
Console.WriteLine("IControl.Paint");
}
void ISurface.Paint()
{
Console.WriteLine("ISurface.Paint");
}
public void Paint()
{
Console.WriteLine("SampleClass_2.Paint");
}
private int _value=10;
int IControl.P
{
get { return _value; }
//set { }顯式接口必須和接口定義完全一致,不能任意添加set訪問器
}
}