在 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() 的方法,与接口中的方法名称相同。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP