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指定访问可以实现这一点。

A
class
不能有
default
方法,只需
接口即可。。。您的第一个示例中的注释就是这么说的!默认方法只适用于界面为什么你认为这很奇怪?正如您所说的,默认方法只能在接口中声明-声明为普通类会导致错误。这是我所期待的。这与你的问题有关吗?为什么在出现错误时指出错误会很奇怪?我不明白。通过提问让我明白这一点。void test(){}@sparsh610的访问说明符是什么:-没有指定访问修饰符,因此它有“packave private”修饰符。@sparsh610在这种情况下没有指定访问,因此它获取默认访问,即“package private”。在这种情况下,“default”一词与
default
关键字没有关系。类似地,在接口中,您可以使用指定的访问权限
public
,但由于它是唯一有效的访问说明符,不在接口中包含访问说明符会导致默认访问,即“public”。因此,我可以断定默认关键字来自java吗8@sparsh610对
default
关键字是在Java8中引入的,它的唯一含义是接口中的方法不仅定义了方法,还定义了它的默认实现。