小编use*_*089的帖子

类中的静态方法与接口中的默认方法具有相同的签名

我有以下情况:

class C {
    static void m1() {}
}

interface I {
    default void m1() {}
}

//this will give compilation error : inherited method from C cannot hide public abstract method in I
class Main extends C implements I {

}
Run Code Online (Sandbox Code Playgroud)

以下是我的问题:

  1. 我知道实例方法将覆盖默认方法,但是如果类中的静态方法与Interface中的默认方法具有相同的签名呢?

  2. 如果静态方法m1()class C将公共那么编译错误将是:

    静态方法m1()与I.中的抽象方法冲突

因此,当访问修饰符是默认值时,它试图隐藏,当它是公共时,它是冲突的.为什么会有这种差异?它背后的概念是什么?

java inheritance multiple-inheritance default-method

12
推荐指数
2
解决办法
625
查看次数