C#中,接口是不能实例化的,或者说,不能对一个接口使用new关键字。
因为接口中的方法和属性只有声明,并没有具体实现。若从一个接口创建对象,它怎么知道要怎么做呢?
但是,可以引用接口。
比如,我们有一个Person类,它实现了IPerson接口,这时,我们可以这样:
Person John = new Person();
IPerson Tom = John;
第一行不必解释;第二行使用IPerson创建了一个新的引用变量。Tom指向了John所指的对象。Tom可以且只能指向任何实现了IPerson接口的类的实例。
接口引用可以保持一个对象是存活的。即使让John不再指向原对象,原对象也不会被回收,因为仍有一个接口引用指向它。
可以使用 is 关键字来查看一个类是否实现了某个接口
if( Tom is IPerson)
{
Console.WriteLine("Tom实现了IPerson接口");
}
接口也可以继承其他接口,如:
interface IPerson2:IPerson1
{
}
IPerson2继承了IPerson1。注意:若一个类想实现IPerson2接口,则该类必须首先实现IPerson1接口。