【一句话】Java8后abstract class和interface的区别
首先一句话:
Java8后(1)interface支持default和static方法有实现,abstract class依然是抽象方法和非抽象方法,(2)可同时实现多个interface,(3)但成员变量只能是static final的。
我的理解:
abstract class的出现是为了防止直接被实例化,而是希望业务程序员自行实现具体方法,例如:你是一种几何形状,我知道你能绘画,即draw();但具体如何绘画,请自己实现。interface在abstract的基础上更近一步,只提供抽象方法,所有方法全部自己实现。
那么出于这种考虑,为什么Java8之后引入了默认方法和静态方法呢:
默认方法:方便统一修改公共方法,而不需要在接口实现变动时修改所有的实现。
静态方法:同理,但不能被重写