抽象类和接口的比较

参考:https://baijiahao.baidu.com/s?id=1622053733155304478&wfr=spider&for=pc

1、抽象类:

  抽象类不能创建实例,只能作为父类被继承。

1)抽象方法是只有函数声明,不包含实现,可以看成是没有具体实现的虚方法

2)抽象类不能实例化

3)抽象类可以包含但不一定包含抽象属性和抽象方法,但是有抽象方法,就一定要把这个类声明为抽象类

4)抽象类的具体实现子类一定要全部实现抽象基类类的抽象方法

5)抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖他们。

 

2、接口:

1)接口不能被实例化

2)接口只能包含方法声明

3)接口的成员包括方法、属性、索引器、事件

4)  接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员

 

3、区别:

1)抽象类可以有构造函数,接口中不能有构造函数

2)抽象类中可以有普通成员变量,接口汇总没有普通成员变量

3)抽象类中可以包含静态方法,接口中不能包含静态方法

4)  一个类可以实现多个接口,但是只能继承一个抽象类

5)接口可以被多重实现,抽象类只能被单一继承。

6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法不必实现,而在抽象类的子类中实现接口中方法

 

4、相同点:

1)都可以被继承

2)都不能实例化

3)都可以包含方法声明

4)具体(非抽象)派生类必须实现未实现的方法

 

posted @ 2019-08-20 15:48  夕颜4948  阅读(184)  评论(0编辑  收藏  举报