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

实现两个含同名同签名方法的接口时,类如何重写该方法?是否可行?

实现含同名同签名方法的两个接口的解决方案

完全可以实现,主要有两种处理方式:

1. 公共方法统一实现

像你给出的示例代码那样,直接编写一个公共的add方法即可。因为两个接口的方法签名完全一致,这个公共方法会同时满足两个接口的实现要求。不管通过哪个接口的引用调用add,都会执行同一套逻辑。

示例代码:

interface example1
{
    int add(int a, int b);
}

interface example2
{
    int add(int a, int b);
}

public class cls : example1, example2
{
    public int add(int a, int b)
    {
        int c = a + b;
        return c;
    }
}

2. 显式接口实现(区分不同逻辑)

如果需要针对两个接口的add方法执行不同逻辑,可以用显式接口实现——在方法名前加上对应接口的名称和.,以此区分不同接口的方法。

示例代码:

interface example1
{
    int add(int a, int b);
}

interface example2
{
    int add(int a, int b);
}

public class cls : example1, example2
{
    int example1.add(int a, int b)
    {
        // 对应example1接口的add逻辑
        return a + b;
    }

    int example2.add(int a, int b)
    {
        // 对应example2接口的add逻辑
        return a * b; // 这里改成乘法做示例
    }
}

调用时必须通过对应接口的引用才能触发各自的逻辑:

example1 e1 = new cls();
e1.add(2,3); // 执行example1的add,返回5

example2 e2 = new cls();
e2.add(2,3); // 执行example2的add,返回6

注意:显式实现的方法不能加public修饰符,它们仅属于对应的接口,无法通过类的直接实例调用,必须转成接口类型才行。

内容的提问来源于stack exchange,提问作者Keshav Pratap K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:45:35