java

java抽象类与接口

2018-04-21  本文已影响5人  n油炸小朋友

原来我只知道一个类可以实现多个接口,但只可以继承一个抽象类,但并不能清楚地认识到它们的区别及使用的场景。

在查阅不同的博客之后我得到结论:抽象类是对概念本质的总结,接口是对行为的规范。

什么是抽象类呢,我是这样理解的,就是从不同的东西抽象出来相同的属性或者行为的类,但这个类并不能具体地描述一个具体类。比如手机和座机都同属于通讯工具,通讯工具抽象出了手机和座机可以通讯等特点,但通讯工具并不能准确地描述手机和座机,因为手机、座机还有其他的属性。

接口同样可以把手机和座机的行为抽象出来,为什么不用接口呢,因为手机座机除了通讯的方法,还需要其他的属性,如型号、出厂日期等,接口只支持定义静态不可变的属性,这显然不符合要求。还有抽象类中可以没有抽象方法,意味着我们可以在这里写默认的行为,被子类继承后,子类可以调用super.方法名(),这样就不会造成代码的重复,接口要实现这样的效果,需要依靠定义拥有这个方法的接口的对象作为成员变量,做法请看对“针对接口编程”的理解

抽象类能够保证实现的层次关系,避免代码重复。然而,即使在使用抽象类的场合,也不要忽视通过接口定义行为模型的原则。如果依赖于抽象类来定义行为,往往导致过于复杂的继承关系,而通过接口定义行为能够更有效地分离行为与实现,为代码的维护和修改带来方便。

总结:

关于实例化:

关于实现:

关于成员变量:

关于方法:

上一篇下一篇

猜你喜欢

热点阅读