在 Java 中,實現介面的類是否必須實現介面中的所有方法?


是的,除非該類宣告為抽象類,否則必須實現實現介面的類中的所有方法。

只有兩種選擇:

  • 實現介面定義的每個方法。
  • 將類宣告為抽象類,因此,在建立任何物件之前,必須對其進行子類化(並實現缺少的方法)。

唯一不需要實現介面中所有方法的情況是,如果其繼承樹中的任何類已經提供了具體的(即非抽象的)方法實現,那麼子類無需重新實現這些方法。子類甚至可以完全不實現介面,只要方法簽名匹配即可。

示例

interface MyInterface {
   void m() throws NullPointerException;
}
class SuperClass {
   // SuperClass class doesn't implements MyInterface interface
   public void m() {
      System.out.println("Inside SuperClass m()");
   }
}
class SubClass extends SuperClass implements MyInterface {
}
public class Program {
   public static void main(String args[]) {
      SubClass s = new SubClass();
      s.m();
   }
}

輸出

Inside SuperClass m()

以上程式碼顯示了一個具體的類 SubClass,它宣告實現了 MyInterface 介面,但沒有實現介面的 m() 方法。這段程式碼是合法的,因為它的父類 SuperClass 實現了一個名為 m() 的方法,與介面中的方法名稱相同。

更新於:2019年7月30日

8K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告