You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:06:08