在java接口中调用静态方法

问题描述 投票:0回答:1

我试图在java接口中创建一个静态方法,但是当我尝试使用类对象调用它时,它导致了错误。我想如果静态方法属于类,也许我无法在接口中创建静态方法/变量。但这里说的是 Interfaces 接口可以有静态方法/变量。请澄清这一点。另外,如果接口中确实存在静态方法/变量,您如何在类中调用它。

尝试在接口中创建静态方法。

无法从我正在实现接口的类中调用它。

给出错误。

java inheritance methods
1个回答
0
投票

您的问题的答案在 Java 语言规范 第 8.4.8 章中。继承、覆盖和隐藏:

类 C 从其直接超类继承超类的所有具体方法 m(静态和实例),其中以下所有条件均成立:

  • [...]

类 C 从其直接超类和直接超接口继承所有抽象和默认(第 9.4 节)方法 m,其中以下所有条件均成立:

  • [...]

不从其超级接口继承静态方法

最后一句话意味着要从类实现的接口调用静态方法,您必须用接口的名称来限定它:

interface MyInterface {
    static void info() {
    }
}
class MyClass implements MyInterface {
    public static void main(String[] args) {
        MyInterface.info();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.