小编Mur*_*ren的帖子

如何在继承的函数中重新定义在主体接口中定义的函数而不覆盖?

有人可以解释同一类上的相同函数的行为有何不同吗?

using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        MyUpperScript mAsdfScript = new MyUpperScript();
        IInterface mAsdfInterface = mAsdfScript;
        mAsdfScript.Foo();
        mAsdfInterface.Foo();
    }
}

public class MyUpperScript : MyScript
{
    public void Foo()
    {
        Console.WriteLine("Upper Script");
    }
}
public class MyScript : IInterface
{

}

public interface IInterface
{
    public void Foo()
    {
        Console.WriteLine("Interface");
    }
}

Run Code Online (Sandbox Code Playgroud)

我期望它在 Foo() 调用上都写“Upper Script”

请注意,如果我也从接口派生第二个类,它会按照我期望的方式工作 - 都打印“Upper Script”:

// now deriving for the interface too:
public class MyUpperScript : MyScript, IInterface
{ …
Run Code Online (Sandbox Code Playgroud)

c# inheritance overriding interface default-interface-member

21
推荐指数
1
解决办法
953
查看次数