是的,必须在实现接口的类中实现所有方法,直到并且除非该类被声明为抽象类。
只有两个选择-
实现接口定义的每个方法。
将该类声明为抽象类,结果迫使您在创建任何对象之前先对该类进行子类化(并实现缺少的方法)。
类不需要在接口中实现所有方法的唯一情况是,当其继承树中的任何类已经提供了具体的(即非抽象的)方法实现时,子类就没有义务重新实现这些方法。子类可能根本不实现接口,而只是方法签名被匹配。
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()
与接口中的方法同名的方法。