接口 Interface
- 接口不能实例化
- 接口的成员包括方法、属性、索引器、事件,方法只有声明
- 接口中不能包含常量、字段、构造函数、静态成员。
- 接口中的所有成员默认为public,因此接口中不能有private修饰符
- 派生类必须实现接口所有成员
- 一个类可以实现继承多个接口
- 接口也可以继承多个接口,实现父接口所有成员
- 接口是完全抽象,多继承
抽象类 abstract class
- 抽象类中的抽象方法,只做声明,有方法体,单不包含实现
- 抽象类不一定有抽象方法或抽象属性,但声明了抽象方法,这个类就必须是抽象类
- 抽象类的派生类必须要实现抽象方法
- 抽象类不能实例化
- 抽象类是单继承,部分抽象
如果抽象类中实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口方法
目标 | 选择 |
---|---|
创建多个组件版本 | 抽象类 |
设计小而简练的功能块 | 接口 |
设计大型功能单元 | 抽象类 |