在我们面试的时候,经常会遇到面试官问抽象类和接口有什么区别。大多数人肯定会说:接口中的所有方法都是抽象的,抽象类中的方法也是抽象的。你可以写实现方法。如果你还是这样回答,那你就OUT了,一定要跟上表格。当我采访一位39岁的程序员时,他没有回答这个问题。其实了解Java8的同学应该都知道,Java8在接口中引入了默认方法和静态方法,打破了接口,只能写抽象。方法的传统,如果你还不知道,可以点击阅读我之前发过的这篇文章。既然接口可以写实现方法,为什么还要抽象类呢?Java8中的接口和抽象类有什么区别?你困惑吗?不一定完整,但希望对你有用。区别一:首先,抽象类是“类”,而接口只是“接口”。两者的概念和应用场景不同,这也是抽象类和接口的主要区别。区别二:即使在Java8中,实现方法可以写在接口中,但是构造方法不能写,构造方法可以写在抽象类中,也就是说抽象类参与了实例化过程类,而接口没有。区别3:抽象类可以有自己的各种成员变量,可以通过自己的非抽象方法来改变,而接口中的变量默认都是publicstaticfinal修饰的,也就是说都是常量,不能可自行更改和外部修改。区别四:接口可以实现多继承,而抽象类只能继承单继承。我举两个例子:publicclassHashMap
