为什么有了接口还要增加一层抽象类?

Posted 小小张自由—>张有博

tags:

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

接口:

接口里的方法和抽象类中的方法一样,它的方法是抽象的,也就是说接口是不能具体化成对象的,

抽象类:

所谓抽象类是指只声明方法的存在而不去实现它的类,抽象类不能实例化,也就是不能创建对象。

抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能定义成抽象类,抽象类里可以没有抽象方法。


区别:

   表象:

  抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但是可以实现多个接口等。

   深层次理解:

1.类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。接口是对类的局部(行为)进行抽象,而抽象类是对类整体(字段、属性、方法)的抽象。不论接口、抽象类、类、甚至对象,都是在不同层次、不同角度进行抽象的结果。他们的共性就是抽象。

如果行为跨域不同类的对象(飞机、麻雀、超人),可使用接口;对于一些相似的类的对象(猫狗),可继承抽象类。

2.抽象类是从子类中发现公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知道子类的存在,方法如何实现还不确定,预先定义。

3.抽象类是自底向上抽象出来的,而接口则是自顶向下设计出来的。


类图

使用抽象类前

使用抽象类后


 为什么有了接口还要增加一层抽象类?

    让抽象类去实现接口,而不是每个实现类去实现接口,实现类一致的行为(或者说大部分一致的行为)在抽象类中进行实现,而不一致的行为(或者一小部分不一致的行为),在抽象类中写成抽象方法,让子类去重写,减少子类重写接口所有方法的负担。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

以上是关于为什么有了接口还要增加一层抽象类?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们的项目需要接口层/抽象类? [关闭]

汽车工厂

5月29 服务接口

java中的Dao类是啥意思?

在CNN上增加一层CAM告诉你CNN到底关注什么

接口和抽象类