Java 20继承问题:@Override注解报错已解决
解决NetBeans中@Override注解提示“方法未覆盖或实现超类型的方法”问题
你定义了抽象类Message、接口IMessageDAO(包含getByID方法)、实现类ImplMessageDAO,同时创建了继承Message的InBox类,在InBox中实现getByID并添加@Override时,NetBeans 18报错提示方法未覆盖超类型方法,但该方法明明在接口中定义。以下是常见的错误原因及解决方式:
InBox类未显式实现IMessageDAO接口
接口的方法需要类显式声明实现该接口才能被覆盖。如果Message抽象类没有实现IMessageDAO,那么InBox仅仅继承Message不会自动获得接口方法的实现义务,必须在类定义时加上implements IMessageDAO,示例代码:public class InBox extends Message implements IMessageDAO { @Override public Message getByID(int id) { // 业务实现逻辑 return null; } }方法签名与接口定义不一致
仔细核对以下细节:- 方法名大小写:比如接口定义是
getByID,你写成了getById(注意末尾字母的大小写差异) - 参数类型/数量:接口方法参数是
String id,你写成了int id,或者参数个数不匹配 - 返回值类型:接口返回
InBox类型,你返回了Message(协变返回类型允许,但完全不匹配会报错) - 访问修饰符:接口方法默认是
public,实现时不能用protected、private等更严格的修饰符,必须显式声明public
- 方法名大小写:比如接口定义是
抽象类
Message中已定义同名方法,但签名不兼容
如果Message中存在getByID方法,但签名和IMessageDAO中的不一致(比如参数类型不同),那么InBox中的方法会被视为重写父类Message的方法,若签名不匹配也会触发报错,此时需要对齐父类与接口的方法签名。
内容的提问来源于stack exchange,提问作者AD5XJ
相关产品推荐
相关产品推荐

