定义:
接口就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一个接口定义了一个协议,接口可以包含方法、属性、事件和索引。
接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。
- 接口中的成员不允许使用 public、private、protected、internal 访问修饰符(接口声明默认是 public 的)。
- 接口中的成员不允许使用 static、virtual、abstract、sealed 修饰符。
- 在接口中不能定义字段。
- 在接口中定义的方法不能包含方法体。
interface IMyInterface
{
int ID{get;set;}
string Name {get;set;}
void Method();
}
作用:
1.实现多重继承(类只能单重继承)(接口的出现最大的意义就是解决类只能单一继承的问题)
2.实现多态
用法:
实际应用中通常是将接口中的所有成员全部实现
接口和抽象类的区别:
接口 | 抽象类 |
---|---|
在接口中仅能定义成员,但不能有具体的实现。 | 抽象类除了抽象成员以外,其他成员允许有具体的实现。 |
在接口中不能声明字段,并且不能声明任何私有成员,成员不能包含任何修饰符。 | 在抽象类中能声明任意成员,并能使用任何修饰符来修饰。 |
接口能使用类或者结构体来继承。 | 抽象类仅能使用类继承。 |
在使用类来实现接口时,必须隐式或显式地实现接口中的所有成员,否则需要将实现类定义为抽象类,并将接口中未实现的成员以抽象的方式实现。 | 在使用类来继承抽象 类时允许实现全部或部分成员,但仅实现其中的部分成员,其实现类必须也定义为抽象类。 |
一个接口允许继承多个接口。 | 一个类只能有一个父类。 |