在實現Java介面時,能否只覆蓋一個方法?


Java中的介面是方法原型的規範。無論何時你需要指導程式設計師,或者制定一個合同來指定型別的行為(方法和欄位),你都可以定義一個介面。

要建立此型別的物件,你需要實現此介面,為介面的所有抽象方法提供主體,並獲取實現類的物件。

示例

 現場演示

interface Sample {
   void demoMethod1();
   void demoMethod2();
   void demoMethod3();
}
public class InterfaceExample implements Sample {
   public void demoMethod1() {
      System.out.println("This is demo method-1");
   }
   public void demoMethod2() {
      System.out.println("This is demo method-2");
   }
   public void demoMethod3() {
      System.out.println("This is demo method-3");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.demoMethod1();
      obj.demoMethod1();
      obj.demoMethod3();
   }
}

輸出

This is demo method-1
This is demo method-2
This is demo method-3

在實現介面時,必須覆蓋所有抽象方法,如果跳過覆蓋任何抽象方法,則會生成編譯時錯誤。

示例

 現場演示

interface Sample {
   void demoMethod1();
   void demoMethod2();
   void demoMethod3();
}
public class InterfaceExample implements Sample {
   public void demoMethod1() {
      System.out.println("This is demo method-1");
   }
   public void demoMethod2() {
      System.out.println("This is demo method-2");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.demoMethod1();
      obj.demoMethod2();
   }
}

輸出

InterfaceExample.java:6: error: InterfaceExample is not abstract and does not override abstract method demoMethod3() in Sample
public class InterfaceExample implements Sample{
       ^
1 error

但是,如果你只想覆蓋一個抽象方法 -

你可以將其餘方法保持未實現,如下所示 -

示例

 現場演示

interface Sample {
   void demoMethod1();
   void demoMethod2();
   void demoMethod3();
}
public class InterfaceExample implements Sample {
   public void demoMethod1() {
      System.out.println("This is demo method-1");
   }
   public void demoMethod2() {
   }
   public void demoMethod3() {
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.demoMethod1();
      obj.demoMethod2();
      obj.demoMethod3();
   }
}

輸出

This is demo method-1

由於不必強制實現介面的預設方法,你可以將其餘方法宣告為預設,如下所示 -

示例

 現場演示

interface Sample {
   void demoMethod1();
   default void demoMethod2() {
      System.out.println("Default demo method 2");
   }
   default void demoMethod3() {
      System.out.println("Default demo method 3");
   }
}
public class InterfaceExample implements Sample {
   public void demoMethod1() {
      System.out.println("This is demo method-1");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.demoMethod1();
      obj.demoMethod2();
      obj.demoMethod3();
   }
}

輸出

This is demo method-1
Default demo method 2
Default demo method 3

更新於: 2019年10月14日

985 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告