小编Bar*_*tek的帖子

为什么我不能在继承抽象类的类中实现默认接口方法,而该抽象类继承了该接口?

我有一个接口和一个继承该接口的抽象类。

public interface ISomeInterface
{
    int Method()
    {
        return 1;
    }
}

public abstract class SomeAbstractClass : ISomeInterface {}
Run Code Online (Sandbox Code Playgroud)

现在我想实现一个继承的类,SomeAbstractClass它也将实现int Method().

public class SomeClass : SomeAbstractClass
{
    public int Method()
    {
        return 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当调用Method()投射SomeClass对象时ISomeInterface,它将显示 1。

ISomeInterface someClass = new SomeClass();
Console.WriteLine($"{someClass.Method()}"); // displays 1
Run Code Online (Sandbox Code Playgroud)

但是如果我添加接口SomeClass

public class SomeClass : SomeAbstractClass, ISomeInterface
{
    public int Method()
    {
        return 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

它将显示 2。

为什么会这样?有没有什么方法可以Method()通过继承SomeAbstractClass而无需编写来声明/实现 …

c# inheritance

5
推荐指数
1
解决办法
92
查看次数

标签 统计

c# ×1

inheritance ×1