Java中default关键字的目的是什么?

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中的一项新功能,可interface提供一个实现。在Java 8

JLS-13.5.6中描述。读取(部分)接口方法声明

添加default方法,或改变的方法,由abstractdefault,不破与预先存在的二进制兼容性,但可能会导致IncompatibleClassChangeError如果一个预先存在的二进制尝试调用的方法。如果限定类型,T是两个接口的子类型IJ,则会出现此错误,其中I和都J声明一个default具有相同签名和结果的方法,而另一个I也不J是另一个子接口。

JDK 8的新增功能说(部分)

默认方法允许将新功能添加到库的接口,并确保与为这些接口的较早版本编写的代码二进制兼容。

以上是 Java中default关键字的目的是什么? 的全部内容, 来源链接: utcz.com/qa/432690.html

回到顶部