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

Java实现接口报错:非抽象类未重写接口抽象方法问题排查

问题根因与解决方案

报错翻译

原始报错内容:

Task is not abstract and does not override abstract method getPriority() in Priority

翻译后:

Task不是抽象类,且未重写Priority接口中的抽象方法getPriority()

根因说明

Java语法规定:非抽象类实现接口时,必须重写接口中定义的所有抽象方法。
你定义的Priority接口包含两个抽象方法:

  • public void setPriority()
  • public void getPriority()
    但实现该接口的Task类是非抽象类,仅重写了setPriority()方法,缺失了getPriority()的实现,因此触发编译报错。

修复方案

方案1:补全getPriority()方法实现(推荐)

在Task类中添加getPriority()的实现逻辑,可根据业务需求自定义方法内容,示例如下:

public class Task implements Priority {
    private int takeOutgarbage;
    private int drinkBeer;
    private int doHomework;
    private String message;

    // 原有setPriority实现保持不变,也可以直接复用接口定义的常量避免硬编码
    public void setPriority(){
        takeOutgarbage = low;
        drinkBeer = high;
        doHomework = medium;
    }

    // 新增getPriority实现
    public void getPriority(){
        // 示例逻辑:打印各个任务的优先级
        System.out.println("倒垃圾优先级:" + takeOutgarbage);
        System.out.println("喝啤酒优先级:" + drinkBeer);
        System.out.println("写作业优先级:" + doHomework);
    }
}

方案2:将Task类改为抽象类(仅适合无需直接实例化Task的场景)

如果暂时不需要实现该方法,且Task仅作为父类供子类继承,可以将其声明为抽象类,抽象类允许不实现接口的全部抽象方法:

// 新增abstract修饰符
public abstract class Task implements Priority {
    // 原有代码保持不变
}

其他注意事项

你提供的Prioritization类中的main方法没有加static修饰符,不符合Java程序入口方法的规范,后续运行还会触发错误,建议修改为:

public class Prioritization extends Task {
    // 新增static修饰符
    public static void main(String[] args) {
        Prioritization p = new Prioritization();
        p.setPriority();
        p.getPriority();
    }
}

内容的提问来源于stack exchange,提问作者Noobprogrammer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 16:06:04