在Java中,可以宣告抽象方法為final或static嗎?


沒有方法體的方法稱為抽象方法。它只包含方法簽名和一個分號,以及它之前的abstract關鍵字。

public abstract myMethod();

要使用抽象方法,需要透過擴充套件其類併為其提供實現來繼承它。

宣告抽象方法為static

如果在類中宣告一個抽象方法來使用它,則必須在子類中重寫此方法。但是,靜態方法無法重寫。因此,抽象方法不能是靜態的。

如果仍然嘗試宣告一個靜態的抽象方法,則會生成一個編譯時錯誤,提示“修飾符非法組合——abstract和static”。

示例

在下面的Java程式中,我們嘗試宣告一個靜態的抽象方法。

 線上演示

abstract class MyClass {
   public static abstract void display();
}
public class AbstractClassExample extends MyClass{
   public void display() {
      System.out.println("This is the subclass implementation of the display method ");
   }
   public static void main(String args[]) {
      new AbstractClassExample().display();
   }
}

編譯時錯誤

編譯時,上述程式會生成以下錯誤。

AbstractClassExample.java:2: error: illegal combination of modifiers: abstract and static
   public static abstract void display();
^
1 error

宣告抽象方法為final

同樣,您不能在Java中重寫final方法。
但是,對於抽象方法,必須重寫抽象方法才能使用它。
因此,不能在方法前同時使用abstract和final。

如果仍然嘗試宣告一個final的抽象方法,則會生成一個編譯時錯誤,提示“修飾符非法組合:abstract和final”。

示例

在下面的Java程式中,我們嘗試宣告一個final的抽象方法。

public abstract class AbstractClassExample {
   public final abstract void display();
}

編譯時錯誤

編譯時,上述程式會生成以下錯誤。

AbstractClassExample.java:2: error: illegal combination of modifiers: abstract and final
public final abstract void display();
^
1 error

更新於:2020年6月29日

10K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告