概念
接口描述的是可属于任何类或结构的一组相关行为,所以实现接口的类或结构必须实现接口定义中指定的接口成员。
定义:使用interface 关键字,由方法、属性、事件、索引器或这四种成员类型的任意组合构成。另可使用new、public、protected、intenal和private等修饰符实现接口,但接口成员必须是公共的。
正常人刚接触接口常认为接口多此一举,毕竟直接调用方法就可以了,为什么要用接口呢。那其存在的意义是什么?
总结了一下,接口的目的在于方便类的统一管理和调用,增强约束力。
下面举个简单例子。
示例
interface IProgram{void Fun();}class Program:IProgram{void IProgram.Fun(){Console.WriteLine("哈哈");}static void Main(string[] args){IProgram p =new Program(); //声明接口实例p.Fun();}}
先看上面的代码,声明一个接口,然后实例化调用方法,似乎我不要接口也可以实现,而且更简单。
class Program
{void Fun(){Console.WriteLine("哈哈.");}static void Main(string[] args){Program p = new Program();p.Fun(); }
}
那接口在这种情况下并没有什么用。看下面的代码:
class Laugh
//显式实现接口成员
{public void Fun(){Console.WriteLine("哈哈.");}
}
class Cry
//显式实现接口成员
{public void Fun(){Console.WriteLine("呵呵.");}
}
class Program
{static void Main(string[] args){Laugh p = new Laugh(); p.Fun();Cry c = new Cry();c.Fun();}
}
interface IProgram
{void Fun();
}
class Laugh: IProgram
//显式实现接口成员
{public void Fun(){Console.WriteLine("哈哈.");}
}
class Cry: IProgram
//显式实现接口成员
{public void Fun(){Console.WriteLine("呵呵.");}
}
class Program
{static void Main(string[] args){IProgram p = new Laugh(); p.Fun();IProgram c = new Cry();c.Fun();}
}
由上面的对比可以看出,接口适用于多个类都有共同的方法,使用接口可以对这些方法同统一调用管理。
接口继承和类继承的区别
- 类继承不仅是说明继承,也是实现继承;接口继承只是说明继承。派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现。
- C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。
参考文章如下:
C# 接口《通俗解释》
C#之接口