【发布时间】:2015-10-13 05:33:06
【问题描述】:
Java 中的接口类似于类,但其主体是 接口可以包含仅抽象方法和
final字段 (常数)。
最近看到一个问题,是这样的
interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}
根据接口定义,只允许使用抽象方法。为什么它允许我编译上面的代码? default 关键字是什么?
另一方面,当我尝试编写以下代码时,它会显示modifier default not allowed here
default class MyClass{
}
而不是
class MyClass {
}
谁能告诉我default 关键字的用途?它只允许在接口内部吗?它与default(无访问修饰符)有何不同?
【问题讨论】:
-
Java 8 中添加了接口中的默认方法。它不是访问修饰符,而是默认实现。
-
@Eran 你不觉得,引入违反接口定义的默认方法吗? :s
-
它改变了接口定义。这个定义现在已经过时了。
-
引入它们是为了支持 lambda。为什么需要它们的详细信息在 Lambda 项目的稻草人提案中。
标签: java interface java-8 default