实现 Java 接口时,我们能否只覆盖一个方法?

javaobject oriented programmingprogramming更新于 2024/6/30 0:57:00

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

由于 int 不是实现接口默认方法的必需参数,因此您可以将剩余方法声明为 default

示例

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

相关文章