为什么我们不能在类中为方法添加默认值

spa*_*610 -2 java java-8

如果我们没有在默认情况下向方法添加任何访问说明符,则它是默认类型。

但是我们添加了default关键字然后它给了我错误,就像我们只能在接口中使用默认方法一样。我知道函数式接口中的默认方法,但奇怪为什么它在 eclipse 中显示错误。

public class Test
{
    
    default void test() { //Default methods are allowed only in interfaces.
        
    }
}
Run Code Online (Sandbox Code Playgroud)

这个工作正常

public class Test
{
    void test()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么理由吗?

Mar*_*eel 6

default关键字与源自未指定访问权限的默认“包私有”访问权限无关。该default关键字仅适用于接口(而不仅仅是功能接口),以在接口中提供默认实现。这是 Java 8 中引入的一项功能,可以更轻松地进行界面演变。

default在类中使用时重载关键字以表示“包私有”访问只会令人困惑并且没有实际价值,因为通过指定访问来实现相同的目的。