在 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+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告