Java中的抽象方法宣告可以包含throws子句嗎?


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

public abstract myMethod();

是的,你可以從抽象類中丟擲異常。

示例

在下面的Java程式中,我們有兩個類:一個名為MyClass的抽象類,它有一個抽象方法(display()),另一個類繼承了該抽象類。

這裡,display() 抽象方法丟擲一個IOException。

示例

 線上演示

import java.io.IOException;
abstract class MyClass {
   public abstract void display() throws IOException;
}
public class AbstractClassExample extends MyClass{
   public void display() throws IOException {
      System.out.println("This is the subclass implementation of the display method");
   }
   public static void main(String args[]) {
      try {
         new AbstractClassExample().display();
      }
      catch (IOException e) {
         e.printStackTrace();
      }
   }
}

輸出

This is the subclass implementation of the display method

在從子類覆蓋抽象方法時,你需要遵循以下規則:

  • 如果超類中的抽象方法丟擲某些異常,實現的方法可以丟擲相同的異常。

  • 如果超類中的抽象方法丟擲某些異常,實現的方法可以選擇不丟擲任何異常。

  • 如果超類中的抽象方法丟擲某些異常,實現的方法可以丟擲其子型別。

  • 如果超類中的抽象方法丟擲某些異常,實現的方法不應該丟擲其超型別。

更新於:2020年6月29日

2K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告