我们是否必须在实现Java接口的类中实现所有方法?

是的,必须在实现接口的类中实现所有方法,直到并且除非该类被声明为抽象类。

只有两个选择-

  • 实现接口定义的每个方法。

  • 将该类声明为抽象类,结果迫使您在创建任何对象之前先对该类进行子类化(并实现缺少的方法)。

类不需要在接口中实现所有方法的唯一情况是,当其继承树中的任何类已经提供了具体的(即非抽象的)方法实现时,子类就没有义务重新实现这些方法。子类可能根本不实现接口,而只是方法签名被匹配。

示例

interface MyInterface {
   void m() throws NullPointerException;
}
class SuperClass {
   //SuperClass类未实现MyInterface接口
   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()与接口中的方法同名的方法。