参考:
1、抽象类:
抽象类不能创建实例,只能作为父类被继承。
1)抽象方法是只有函数声明,不包含实现,可以看成是没有具体实现的虚方法
2)抽象类不能实例化
3)抽象类可以包含但不一定包含抽象属性和抽象方法,但是有抽象方法,就一定要把这个类声明为抽象类
4)抽象类的具体实现子类一定要全部实现抽象基类类的抽象方法
5)抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖他们。
2、接口:
1)接口不能被实例化
2)接口只能包含方法声明
3)接口的成员包括方法、属性、索引器、事件
4) 接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员
3、区别:
1)抽象类可以有构造函数,接口中不能有构造函数
2)抽象类中可以有普通成员变量,接口汇总没有普通成员变量
3)抽象类中可以包含静态方法,接口中不能包含静态方法
4) 一个类可以实现多个接口,但是只能继承一个抽象类
5)接口可以被多重实现,抽象类只能被单一继承。
6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法不必实现,而在抽象类的子类中实现接口中方法
4、相同点:
1)都可以被继承
2)都不能实例化
3)都可以包含方法声明
4)具体(非抽象)派生类必须实现未实现的方法