c# - 从多个接口(interface)继承相同的方法

标签 c# inheritance

我们知道在 C# 中允许多重(接口(interface))继承,但是,我想知道两个接口(interface)是否有可能 示例:

 interface calc1
{
    int addsub(int a, int b);
}
interface calc2
{
    int addsub(int x, int y);
}

方法名相同,类型相同,参数类型相同

会在上面的类中继承吗?

class Calculation : calc1, calc2
{
    public int result1;
    public int addsub(int a, int b)
    {
        return result1 = a + b;
    }
    public int result2;
    public int addsub(int x, int y)
    {
        return result2= a - b;
    }
}

如果是,那么将调用哪个接口(interface)方法。

提前致谢。

最佳答案

你不能像那样重载方法,不——它们具有相同的签名。您的选择是:

  • 使用一个实现,将被两个接口(interface)调用
  • 对其中一个或两个方法使用显式接口(interface)实现,例如

    int calc2.addsub(int x, int y)
    {
        return result2 = a - b;
    }
    

    如果你对这两种方法都这样做,这两种方法都不能在Calculation类型的引用上调用;相反,您必须在调用方法之前强制转换为一个接口(interface)或另一个接口(interface),包括在类中。例如:

    public void ShowBoth()
    {
        Console.WriteLine(((calc1)this).addsub(5, 3)); // 8
        Console.WriteLine(((calc2)this).addsub(5, 3)); // 2
    }
    

关于c# - 从多个接口(interface)继承相同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32623554/

相关文章:

Go 中的继承

java - 将方法委托(delegate)给Java中的子类

java - 如何从继承类调用的抽象类调用抽象方法

c# - 具有强类型返回类型的抽象方法

c# - 如何向 NHibernate queryover 添加按方向动态排序

c# - .NET Core 2.1 中 UserManager 的 AutoSaveChanges

c# - 在 LINQ 中使用 MIN 函数

c# - 这个自引用继承代码中发生了什么?

c# - 如何使用 .NET Core 压缩图像大小?

c# - 如何在不使用 ping 的情况下检查 Web 服务是否已启动并正在运行?