抽象类和接口的区别比较
在面向对象的概念中,抽象类和接口都是一种特殊的类,它们具有一些共性,也有一些区别。
二者的相同点:
都属于引用类型的数据,是一种特殊的类;
都不能实例化;
都可以包含未实现的方法声明和属性声明;
两者的派生类都必须实现它们的声明,派生类实现抽象类的抽象属性和抽象方法,而接口则要实现它的所有成员
二者的不同点:
抽象类是由相似对象抽象而成的类,而接口是一个行为的规定或规范;
一个类可以实现多个接口,但只能从一个基类(单继承的情况下)中派生;
抽象类即包含了可变部分不可变部分,但是接口只定义了可变的部分;
总的来说,抽象类是对根源的抽象,接口是对动作的抽象;抽象类表示这个对象是什么,接口表示这个对象能做什么;当关注一个事物的本质时,如要创建组件的多个版本,用抽象类,当关注功能操作的时候,如创建的功能要在所有对象中使用,则可以用接口。
参考: 《C#可视化编程技术》