1:什么是抽象类和接口?
①抽象类:
官方:
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
个人理解:
类用来描述对象,是对象的模版,抽象类实际就是抽象的对象。例如我们熟悉的水果,苹果,香蕉,猕猴桃,等等大小形态有很大区别,我们怎么把他们抽象一下呢?那就是他们都有一些本质上相同的东西那就是他们都是水果,是水果就有水分,味道等等我们把这些给抽象出来,至于水分是多少的,味道是酸还是甜,这就需要子类实现水果这个抽象方法了。
②接口:
官方:
接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。
个人理解:
接口就是一种特殊的abstract class,但是比abstract class更加抽象,是完全抽象的抽象类;
接口是一系列抽象方法的集合,是一种规范;
接口的作用:
1、Java是单继承,不能继承多个抽象类,只能实现多个接口
2、解耦。把若干功能拆分出来,按照契约来进行实现和依赖。
3、定义接口有利于代码的规范。
二、具体区别:
三、实际工作中:
大多数第三方框架都会暴露一个接口供外界调用,因为这是行业规范,例如:mybaties的Mapper接口;
而抽象类使用比较少。