.NET中接口和抽象类的简单比较
2010-06-08 20:52 2323 阅读(235) 评论(0) 收藏 举报|
特征 |
Interface |
Abstract class |
|
多重继承 |
一个类可以实现多个接口 |
一个类仅仅可以继承一个抽象类 |
|
默认实现 |
接口不能包含任何的默认实现,仅仅可以保护成员签名 |
抽象类可以提供完全的,或者是部分的成员实现。 |
|
访问修饰符 |
接口中的成员不能包含任何的访问修饰符,所以的成员都是public |
抽象类中的成员可以保护访问修饰符 |
|
核心 VS 外延 |
接口通常用户实现外延的功能。 比如 Human 和 Vehicle 都可以实现 IMovable。 |
抽象类通常用于实现类的核心功能 |
|
同质性 |
如果要求需要有相同的方法签名,但是不同的具体实现,那么可以选择接口。 |
如果不同的具体实现需要具有同样的行为,那么抽象类更加合适。 |
|
速度 |
需要更多的时间类查找对应具体类的成员 |
快速 |
|
增加新的成员(版本问题) |
如果你在接口中增加一个方法,那么需要在实现该接口的所有类中提供该方法的实现。 |
如果在抽象类中增加一个方法,你可以给该方法提供一个默认的实现,而且子类不需要任何的修改。 |
|
字段和常量 |
接口中不能定义field和常量 |
抽象类中可以定义field和常量. |
浙公网安备 33010602011771号