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

Java实现多接口报错:Main类从first、second继承不相关的display()默认方法

Java接口默认方法冲突问题说明

你遗漏的核心接口特性

Java 8及以上版本支持接口定义带具体实现的default方法,为了避免多继承的逻辑歧义,Java做了强制约束:当一个类同时实现多个接口,且多个接口存在签名完全相同的默认方法时,实现类必须主动重写该冲突方法,不能直接继承任意一个接口的默认实现,否则编译器会直接抛出你遇到的继承冲突错误。

报错原因

你定义的first和second两个接口都存在同签名的display()默认方法,Main类同时实现这两个接口却没有重写display()方法,编译器无法判断调用object.display()时应该执行哪个接口的默认逻辑,因此直接编译失败。

修复方案

你只需要在Main类中主动重写display()方法即可,若需要保留某个接口的默认实现,可以用接口名.super.方法名()的语法指定调用逻辑,参考代码如下:

public class Main implements first, second
{
    // 重写冲突的display方法
    @Override
    public void display() {
        // 示例:选择调用first接口的默认实现,也可以自定义全新逻辑,或者同时调用两个接口的实现
        first.super.display();
    }

    public static void main(String[] args) {
        Main object = new Main();
        object.display();
    }
}

interface first {
       default public void display() {
              System.out.println("This is the display function of interface first");
    }
}

interface second {
      default public void display() {
             System.out.println("This is the display function of interface second");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:27:03