一:什么是接口

面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分
——接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。例如人都能吃饭,即“如果你是人,则必须能吃饭”。那么模拟到计算机程序中,就应该有一个IPerson接口,并有一个方法叫Eat(),然后我们规定,每一个表示人的类,必须继承IPerson接口,这就模拟了自然界“如果你是人,则必须能吃饭”这条规则
——接口是在一定粒度视图上同类事物的抽象表示,因为“同类事物”这个概念是相对的,它因为粒度视图不同而不同。例如在我的眼里,我不能接受我和猪是同类,但是在一个动物学家眼里,我和猪就是同类,现在又有一个遗传学家,那么我和细菌,树,蘑菇等都是同类


二:接口的注意事项

——接口中不能定义字段,可以定义自动属性(只有get和set,没有方法体)
C#中的接口_C#

——接口中的函数只有定义没有函数体也就是说不能实现,接口中的函数不需要有修饰符,默认都为public
C#中的接口_C#_02

——接口不能实例化,不能使用接口去构造对象,可以用接口去声明对象
C#中的接口_C#_03

接口与抽象的比较:
——接口中只能定义方法,自动属性,索引器,事件。抽象类中任何类型都可以定义,包括字段
——一个子类可以继承多个接口,但是只能继承一个类
——接口中的方法只能定义不能有实现。抽象类中的方法可以有实现也可以没有实现,如果定义为抽象方法则不能有实现
——接口中的方法必须在派生类中实现。抽象类中的抽象方法必须在派生类中实现,普通方法可以在抽象类中实现
——接口与抽象一样,不能实例化