C# 中的接口方法可以显式实现,以便在将实例显式转换为接口类型时调用它们的实现。为什么类的虚拟方法也不支持这一点?
尽管解决“多重继承”问题对于接口来说是独一无二的,但似乎由于显式实现的成员对接口有用的所有其他原因,它们对虚拟方法也很有用。一个更清晰的回报型协方差模型浮现在脑海中。
编辑:根据要求,一个例子:
public class Foo {
...
}
public class Bar : Foo {
...
}
class Base {
abstract Foo A ();
}
class Dervied {
private Bar _b;
Bar A () {
return _b;
}
Foo Base.A () {
return _b;
}
}
我知道使用辅助方法来模拟这一点,但最终效果似乎具有显式实现所具有的任何不良特征,但 API 更脏。我的问题的症结不是如何进行返回类型协方差,而是为什么虚拟方法不支持类似的接口机制。