抽象类与接口之间的区别:
从语法来说:
-
抽象类:方法可以有抽象的,也可以有非抽象, 有构造器
-
接口:方法都是抽象,属性都是常量,默认有public static final修饰
-
JDK1.8之后:
-
接口里面可以有实现的方法,注意要在方法的声明上加上default或者static
从开发的角度:
抽象类:
抽象类可以有抽象方法也可以有具体的方法,如在MVC三层架构中,Dao层编写多个UserDao,此时可以抽象类,抽取常用的CRUD方法作为每一个dao的通用方法,而需要同一个方法的不同实现时,就在抽象类中编写抽象方法。
接口:
接口更像是一种开发的规范,虽然在JDK1.8之后也可以写实例方法,但是一般不这么采用。
在MVC三层架构的实际开发中,service调用dao,开发中需要将实现类注入到IOC容器当中,实际调用是由接口调用,由接口指向实现类。
当接口的实现类不能满足功能时,可以随时将新的实现类注入到IOC容器中,由于是用接口调用实现类,此时接口作为一个种规范,并不需要调整相关的代码,从而实现低耦合高内聚的目的。