Java 8 - 接口是否不再是抽象的?

时间:2014-03-14 20:56:53

标签: java interface abstract java-8

到目前为止,Java中的接口无法实现任何方法。根据定义,它们只是没有正文的方法签名的集合。

但似乎这改变了Java 8。

这是真的吗?什么是'默认方法'?什么是“功能界面”?有人在乎向我解释这个吗?谷歌上的事情非常令人困惑。

2 个答案:

答案 0 :(得分:4)

在Java 8中,Interfaces现在可以拥有实际实现的default方法。这样做有助于避免实施已对其进行更改的Interface的用户遇到问题,因此他们不必更新所有类。

您可以通过在方法签名中添加default关键字来添加此功能。

请参阅The Java Tutorials

答案 1 :(得分:3)

  

什么是'默认方法'到底是什么?

默认方法提供了一种机制,您可以将实现添加到接口,而不必将其作为抽象类。

默认方法的主要用例是在不破坏其他人的代码的情况下向接口添加方法的任务。但是,他们也让你"混合"通过实现一个接口的功能,这是Java类型系统的一个非常强大的补充,过去只允许一行实现。

  

什么是功能界面'?

另一方面,功能接口是一种告诉编译器您的接口将只有一个方法的方法。作为交换,编译器为您提供了更短的语法来定义接口的实现,大大缩短了以前依赖于匿名类的代码。

除了上述两个功能外,接口还允许您定义要在所有实现之间共享的静态函数。与默认实现一样,这会增加第二个维度"继承实现,因为它允许您通过接口实现共享代码。