在 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+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.