【发布时间】:2012-06-15 06:41:03
【问题描述】:
如果我有两个类既实现了接口又继承了,我需要将函数设为虚拟吗?例如给定:
interface IDoSomething
{
void DoSomething();
}
class A : IDoSomething
{
public void DoSomething()
{
//do A
}
}
class B : A
{
public new void DoSomething()
{
//do B
}
}
下面的代码会做 A 还是 B?
IDoSomething doer = new B();
doer.DoSomething(); //do A or do B?
我感到困惑,因为我的印象是所有接口调用实际上都是虚拟的,但显然我正在使用 new 运算符来隐藏基本定义。
【问题讨论】:
-
问题是 A 还是 B,或者 为什么 A 而不是 B?因为第一个你可以很容易地回答自己。
-
是的,为什么,对不起!将编辑。