接口和抽象类 分析总结

Posted 765boy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口和抽象类 分析总结相关的知识,希望对你有一定的参考价值。

相似:

1、接口和抽象类都是继承树的上层。
2、都不可被实例化。
3、都能包含抽象的方法。
4、接口可以认为是一种特殊形式的抽象类。


区别:
1、接口是对动作的抽象【定义】可以被认为是一组规则的集合,抽象类是对相似类的抽象【定义】。
2、接口中的方法,只能是抽象方法。抽象类中,可以有抽象方法,也可以有普通方法【有具体行为的方法、非抽象方法】。
3、定义抽象类是为了代码复用,定义接口是为了实现多态。【从动机上看】
4、子类可有实现多个接口,但只能继承子一个父类【抽象类】。
5、接口中只能定义静态常量【基本数据类型为static】,抽象类中可以定义普通成员变量,也可以定义静态常量。
6、接口不能包含构造器,抽象类可以包含构造器【抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作】。

 

抽象方法【接口方法也可以被看作是抽象方法】:
1、只声明,不实现。
2、抽象方法,只能存在于抽象类【接口】中,抽象类中可以没有抽象方法。
3、子类必须实现抽象方法【接口方法】,抽象类继承抽象类【接口】,可以不实现。
4、抽象方法,不能是静态的、私有的。


应用分析:
1、抽象类的功能要大于接口,所以定义抽象类的代价高。
2、抽象类中可以存在非抽象方法,能够保证实现的层次关系,可以避免子类中存在重复代码,重在代码复用。
3、定义抽象类,要编写出可能存在的子类的所以共性。接口只针对动作,在设计阶段会降低难度。
4、对于已经存在的结构,我们可以很方便的从类中抽象出新的接口,但要从类中抽象出抽象类,难度会增大。
5、如果依赖抽象类来定义行为,往往导致过于复杂的继承关系,而通过接口定义行为能 够更有效地分离行为与实现,为代码的维护和修改带来方便。

 

 

 

注:该篇文章,参考了多本书籍以及网上的参考信息。再此就不全部列举了。





















以上是关于接口和抽象类 分析总结的主要内容,如果未能解决你的问题,请参考以下文章

第七周课程总结&实验报告

第五周测试总结分析

解析接口和抽象类

0013JDK源码分析之枚举

Maven实战与原理分析:maven超全使用指南总结

10-16周总结