在 Java 中,我们可以在接口中声明方法为 final 吗?


Java 中的接口是方法原型的规范。每当您需要指导程序员或制定一个合同,指定某个类型的 方法和字段应该如何时,您都可以定义一个接口。

默认情况下,接口的所有方法都是 public 和 abstract。例如,在下面的 Java 程序中,我们声明了一个名为 demo 的方法。

public interface MyInterface{
   void demo();
}

如果您使用如下所示的 javac 命令编译它:

c:\Examples>javac MyInterface.java

它将被编译而不会出现错误。但是,如果您使用如下所示的 **javap** 命令在编译后验证接口:

c:\Examples>javap MyInterface
Compiled from "MyInterface.java"
public interface MyInterface {
   public abstract void demo();
}

您可以观察到编译器已代表您在方法前放置了 public 和 abstract 修饰符。

此外,从 Java 9 开始,您可以在接口的方法中使用 default、static、private 和 private static。除了这些之外,您不能在接口的方法中使用任何其他修饰符。

此外,如果您声明一个方法为 final,则无法覆盖/实现它,并且抽象方法必须被覆盖或实现。因此,您不能声明接口的方法为 final。

如果您仍然这样做,它会生成一个编译时错误,提示“此处不允许使用修饰符 final”。

示例

在下面的 Java 程序中,我们尝试声明接口的一个方法为 final。

public interface MyInterface{
   public abstract final void demo();
}

编译时错误

编译时,上述程序会生成以下编译时错误:

MyInterface.java:2: error: modifier final not allowed here
   public abstract final void demo();
                              ^
1 error

更新于: 2019-07-30

1K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告