【发布时间】:2022-11-18 04:36:04
【问题描述】:
我有一个接口和一个继承这个接口的抽象类。
public interface ISomeInterface
{
int Method()
{
return 1;
}
}
public abstract class SomeAbstractClass : ISomeInterface {}
现在我想实现一个继承SomeAbstractClass 的类,它也将实现int Method()。
public class SomeClass : SomeAbstractClass
{
public int Method()
{
return 2;
}
}
但是,当在转换为 ISomeInterface 的 SomeClass 对象上调用 Method() 时,它将显示 1。
ISomeInterface someClass = new SomeClass();
Console.WriteLine($"{someClass.Method()}"); // displays 1
但是如果我将接口添加到SomeClass
public class SomeClass : SomeAbstractClass, ISomeInterface
{
public int Method()
{
return 2;
}
}
它会显示2。
为什么会这样?有什么方法可以通过从SomeAbstractClass继承来声明/实现Method(),而不需要写, ISomeInterface吗?
如果可能的话,我也不想修改SomeAbstractClass。
我尝试在网上搜索解释,但是很难用简单的一句话来解释这个问题。我试图阅读更多关于默认接口方法的信息,但没有学到任何有意义的东西。
【问题讨论】:
标签: c# inheritance