Java 为什么我们不能在类中为方法添加默认值
若我们并没有在默认情况下向方法添加任何访问说明符,那个么它就是默认类型 但我们添加了Java 为什么我们不能在类中为方法添加默认值,java,java-8,Java,Java 8,若我们并没有在默认情况下向方法添加任何访问说明符,那个么它就是默认类型 但我们添加了default关键字,然后它给了我一个错误,就像我们只能在界面中使用默认方法一样。我知道functional interface中的默认方法,但奇怪的是为什么它在eclipse中显示错误 public class Test { default void test() { //Default methods are allowed only in interfaces.
default
关键字,然后它给了我一个错误,就像我们只能在界面中使用默认方法一样。我知道functional interface中的默认方法,但奇怪的是为什么它在eclipse中显示错误
public class Test
{
default void test() { //Default methods are allowed only in interfaces.
}
}
这个很好用
public class Test
{
void test()
{
}
}
有什么原因吗?关键字
default
与默认的“package private”访问无关,默认的“package private”访问源于未指定访问权限。default
关键字仅适用于接口(而不仅仅是功能接口),以在接口中提供默认实现。这是Java8中引入的一个特性,允许更容易的接口演化
当在类中使用时,重载
default
关键字表示“package private”访问只会造成混淆,没有实际价值,因为通过not指定访问可以实现这一点。Aclass
不能有default
方法,只需接口即可。。。您的第一个示例中的注释就是这么说的!默认方法只适用于界面为什么你认为这很奇怪?正如您所说的,默认方法只能在接口中声明-声明为普通类会导致错误。这是我所期待的。这与你的问题有关吗?为什么在出现错误时指出错误会很奇怪?我不明白。通过提问让我明白这一点。void test(){}@sparsh610的访问说明符是什么:-没有指定访问修饰符,因此它有“packave private”修饰符。@sparsh610在这种情况下没有指定访问,因此它获取默认访问,即“package private”。在这种情况下,“default”一词与default
关键字没有关系。类似地,在接口中,您可以使用指定的访问权限public
,但由于它是唯一有效的访问说明符,不在接口中包含访问说明符会导致默认访问,即“public”。因此,我可以断定默认关键字来自java吗8@sparsh610对default
关键字是在Java8中引入的,它的唯一含义是接口中的方法不仅定义了方法,还定义了它的默认实现。