Java 8 及更高版本中的抽象类和接口之间有什么区别?

Nih*_*rve 1 java

接口中添加了默认方法,抽象类和接口有什么区别?

Abh*_*hek 5

Java 8 中抽象类和接口之间的主要区别在于抽象类是类而接口是接口。

一个类可以有一个可以被非抽象方法修改的状态,但一个接口不能有状态,因为它们不能有实例变量。

第二个区别是即使在 Java 8 中接口也不能有构造函数,但您可能还记得抽象类在 Java 中总是有构造函数。

实际上,引入了默认或防御者方法以保持向后兼容性,同时使 Collection API 更适合在关键 Java 8 功能(如 lambda 表达式)中使用。

如果不添加默认方法,就不可能在 Java 中的现有接口上声明任何新方法而不破坏实现它的所有类,但是由于默认方法,您现在可以更好地发展您的 API。

它们保护您的代码免受实现新方法的影响,因此它们也称为防御者方法。