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

java 8object oriented programmingprogramming更新于 2024/10/14 16:30:00

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

默认情况下,接口的所有方法都是公共和抽象的。例如,在下面的 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 修饰符。

除此之外,从 Java9 开始,您可以在接口方法中使用 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

相关文章